在Android设备的主页按钮单击关闭当前活动

时间:2012-09-21 09:15:12

标签: android android-launcher android-homebutton

我不想让应用程序在后台运行。 当用户在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 个答案:

答案 0 :(得分:1)

我发现这样的方式就像,

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

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

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

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

答案 1 :(得分:0)

@Override
protected void onUserLeaveHint() {
    super.onUserLeaveHint();
    finish();
}

由于这是一项活动,您可以使用onPause()onStop()onResume()

答案 2 :(得分:0)

查看Activity课程的onUserLeaveHint() .. 文档说

  

当活动即将到来时,被称为活动生命周期的一部分   作为用户选择的结果进入后台。

另见onUserInteraction()

答案 3 :(得分:0)

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

enter code here

protected void onStop() {
    super.onStop();
    if (!isFinishing()) {
        finish();
    }
}