按下后退按钮后,我希望我的应用程序进入停止状态,而不是销毁状态。
在安卓中docs http://developer.android.com/intl/fr/guide/practices/ui_guidelines/activity_task_design.html它指出:
...并非所有活动都有按下 BACK 时被销毁的行为。当用户开始在音乐应用程序中播放音乐然后按“返回”时,应用程序将覆盖正常的返回行为,防止播放器 Activity 被破坏,并继续播放音乐,即使其 Activity 不再可见
如何在我自己的应用程序中复制此功能?
我想应该有三种可能...
-
捕获后退按钮按下(如下所示),然后调用主页按钮调用的任何方法。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Log.d(this.getClass().getName(), "back button pressed");
}
return super.onKeyDown(keyCode, event);
}
捕获后退按钮按下操作,然后欺骗主页按钮按下操作。
捕获后退按钮按下,然后启动主屏幕的活动,有效地将我的应用程序的活动置于停止状态。
Edit:我了解服务,并且正在与此问题相关的应用程序中使用一项服务。这个问题具体是关于在按下后退按钮时将 Activity 置于停止状态而不是销毁状态。
大多数时候你需要创建一个Service http://developer.android.com/intl/fr/reference/android/app/Service.html在后台执行某些操作,并且您可见Activity
只需控制这个Service
。 (我确信音乐播放器的工作方式相同,因此文档中的示例似乎有点误导。)如果是这种情况,那么您的Activity
can finish
像往常一样和Service
仍会运行。
更简单的方法是捕获Back
按下按钮并通话移动任务返回(真) http://developer.android.com/intl/fr/reference/android/app/Activity.html#moveTaskToBack%28boolean%29如下:
// 2.0 and above
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
// Before 2.0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
我认为首选选项应该是让 Activity 正常完成并能够重新创建自身,例如如果需要,从服务读取当前状态。但moveTaskToBack
有时可以用作快速替代方案。
NOTE:正如下面 Dave 所指出的,Android 2.0 引入了一个新的onBackPressed
方法,以及这些建议 http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html关于如何处理后退按钮。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)