當點擊後退按鈕,我希望我的應用程序停止,而不是退出。
在android文檔中是這樣說的:
當後退被按下的時候,並不是所有的activity都有退出的行為。當使用者開始在Music應用程序播放音樂的時候,然後按BACK,應用程序重寫了正常的後退行為,阻止播放activity退出,然後繼續播放音樂,盡管它的activity不會再看見。
我應該怎麼在我自己的應用程序復制這個功能?
我認為這有三個可能性。。。
捕獲後退按鈕按下的事件(像下邊一樣)然後調用home鍵調用的任何方法。
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode== KeyEvent.KEYCODE_BACK)) {
Log.d(this.getClass().getName(), "back button pressed");
}
return super.onKeyDown(keyCode, event);}
捕獲後退按鈕的點擊事件然後做一個虛假的home鍵的點擊。
捕獲後退按鈕的點擊事件,然後home視圖的activity,有效的把我的應用程序的activity放到了停止狀態。
大多數情況下,你需要創建一個Service來在後台執行一些事情,而你的可見的Activity僅僅是控制這個Service(我確定音樂播放器是同樣的方式工作,所以文檔中的例子有點不符合)。如果是這樣的話,那麼你的Activity可以像往常一樣完成,而且Service仍然會運行。
一個更簡單的方法是捕獲Back按鈕的點擊事件然後調用moveTaskToBack(true) ,就像下邊這樣:
@Overridepublic
boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode== KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
我認為首選的應該是Activity可以正常的完成,可以重建自己本身,例如如果需要的話從服務器讀取當前的狀態。但是有時候moveTaskToBack可以作為替代方案。
注意:在android2.0的介紹中Dave介紹了一個新的 onBackPressed 方法,和關於如何運用Back按鈕的一些推薦。