在按下后退按钮时,我希望我的应用程序进入停止状态,而不是破坏状态。
在 Android文档中它指出:
…并非所有活动都有在按下 BACK 时被销毁的行为。当用户在 Music 应用程序中开始播放音乐然后按下 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); }
捕获后退按钮按下,然后欺骗主页按钮按下。
捕获后退按钮按下,然后启动主屏幕的 Activity,有效地将我的应用程序的 Activity 置于停止状态。
编辑: 我了解服务,并且正在与此问题相关的应用程序中使用服务。这个问题专门关于将 Activity 置于停止状态而不是按下后退按钮时的销毁状态。
大多数时候,您需要创建一个服务来在后台执行某些操作,而您的可见Activity只是控制它Service。(我确信音乐播放器的工作方式相同,因此文档中的示例似乎有点误导。)如果是这种情况,那么您Activity可以finish照常运行,并且Service仍然可以运行。
Activity
Service
finish
一种更简单的方法是捕获Back按钮按下并调用moveTaskToBack(true),如下所示:
Back
// 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 正常完成并能够重新创建自身,例如在需要时从 Service 读取当前状态。但moveTaskToBack有时可以用作快速替代方案。
moveTaskToBack
注意 :正如 Dave 所指出的,Android 2.0 下面引入了一种新onBackPressed方法,这些建议是关于如何处理后退按钮的。
onBackPressed