如何在自己的应用程序中复制此功能?
我认为肯定有三种可能性…
@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); }
捕获后退按钮按下,然后欺骗主页按钮。
捕获后退按钮的按下,然后启动主屏幕的活动,从而有效地将应用程序的活动置于停止状态。
编辑: 我知道有关服务,并且正在与此问题相关的应用程序中使用一种。该问题专门用于在按“后退”按钮时将活动置于停止状态而不是已破坏状态。
大多数时候,你需要创建一个Service在后台执行某些操作,而你的可见对象Activity只需控制此操作Service。(我敢肯定,音乐播放器以相同的方式工作,所以在文档的例子似乎有点误导。)如果是这样的话,那么你Activity可以finish像往常一样和Service仍将运行。
Activity
Service
finish
一种更简单的方法是捕获Back按钮按下并按如下所示调用moveTaskToBack(true):
moveTaskToBack(true)
// 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); }
我认为首选的选择应该是活动能够正常完成,并且能够重新创建自身,例如,如果需要,可以从服务中读取当前状态。但是moveTaskToBack有时也可以用作快速替代方法。
moveTaskToBack
注意:如Dave所指出的,Android 2.0以下引入了一种新onBackPressed方法,以及有关如何处理“后退”按钮的这些建议。
onBackPressed