2012-09-21 29 views
0

我不想让应用程序在后台运行。 当用户按下Android设备上的主页按钮时,应该完成当前活动。关闭android设备的主页按钮上的当前活动点击

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

我已经创建了接收器在<应用>标签清单文件:

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

不过这个接收器是没有得到调用。如果这个接收器被调用,我可以关闭应用程序。

+0

检查答案在:http://stackoverflow.com/a/4784134/1434631 并阅读:http://stackoverflow.com/questions/2079691/overriding-the-home-button-how-do我摆脱了选择 – Nermeen

回答

1

我发现这样做的方式是像,

当用户按Home键时,调用当前活动的暂停方法。

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

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

它适用于我。希望它能帮助你。

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

而且因为它是一个单一的活动,你可以与onPause()onStop()onResume()工作。

0

退房onUserLeaveHint()Activity类的.. 文档说

调用作为活动周期的一部分,当活动即将 去到后台,成为用户选择的结果。

另请参阅onUserInteraction()

+1

我已经检查过这段代码,但是当我正在转向其他活动时也会调用它。 –

0

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

enter code here 

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

感谢您的回答,但我希望将它用于多个活动的应用程序。 –

相关问题