0

我不想让应用程序在后台运行。当用户在 android 设备上按下 Home 按钮时,当前活动应该完成。

或者当应用程序恢复时,我想知道应用程序已经出现在前台。

我在清单文件的 <application> 标记中创建了接收器:

<receiver
        android:name=".HomeKeyReceiver"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.HOME" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </receiver>

仍然没有调用此接收器。如果调用此接收器,则我可以关闭应用程序。

4

4 回答 4

1

我找到了这样的方法,

当用户按下主页按钮时,当前活动的暂停方法被调用。

在一秒钟的活动进入后台后,如果没有打开其他活动(我使用了全局布尔变量),那么我将消息广播给所有要关闭的活动。

因此,无论哪个活动打开,都将在该接收器上关闭。

这个对我有用。希望它也可以帮助你。

于 2012-12-21T06:55:32.000 回答
0
@Override
protected void onUserLeaveHint() {
    super.onUserLeaveHint();
    finish();
}

而且由于它是一个单一的活动,您可以使用onPause(),onStop()onResume().

于 2012-09-21T09:25:46.157 回答
0

签出onUserLeaveHint()Activity..文档说

当活动由于用户选择而即将进入后台时,作为活动生命周期的一部分调用。

另请参阅onUserInteraction()

于 2012-09-21T09:28:57.557 回答
0

如果您只想强制您的活动不在后台运行,并且每次都重新创建,则必须覆盖 onStop 方法:

enter code here

protected void onStop() {
    super.onStop();
    if (!isFinishing()) {
        finish();
    }
}
于 2012-09-21T09:31:26.260 回答