【问题标题】:Close current activity on android Device's Home button click在 android 设备的 Home 按钮单击上关闭当前活动
【发布时间】:2012-09-21 09:15:12
【问题描述】:

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

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

我已经在清单文件的 标记中创建了接收器:

<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>

仍然没有调用这个接收器。如果调用了这个接收器,那么我可以关闭应用程序。

【问题讨论】:

标签: android android-launcher android-homebutton


【解决方案1】:

我找到了这样的方法,

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

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

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

它对我有用。希望对您也有帮助。

【讨论】:

    【解决方案2】:

    查看onUserLeaveHint() 的Activity 类.. 文档说

    在活动即将开始时作为活动生命周期的一部分调用 作为用户选择的结果进入后台。

    另见onUserInteraction()。

    【讨论】:

    • 我已经检查了这段代码,但是当我转移到其他活动时它也会被调用。
    【解决方案3】:
    @Override
    protected void onUserLeaveHint() {
        super.onUserLeaveHint();
        finish();
    }
    

    由于这是一个单一的活动,您可以使用 onPause()、onStop() 和 onResume()。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 感谢您的回答,但我希望将它用于具有多项活动的应用程序。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-03
      相关资源
      最近更新 更多