app退出時,讓app在後臺執行,app按home鍵到桌面,再返回app不重啟app
阿新 • • 發佈:2019-01-07
第一個問題:app退出時,讓app在後臺執行,類似於home鍵的功能,最小化
解決方法:
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(false); return true; } return super.onKeyDown(keyCode, event); } @Override public void onBackPressed() { moveTaskToBack(false); super.onBackPressed(); }
重寫onkeydown 和onBackPressed方法,主要是movetoBack方法;(注意在MainActivity中設定,即為主介面,而不是SplashActivity《引導頁》)
在activity中呼叫 moveTaskToBack (boolean nonRoot)方法即可將activity 退到後臺,注意不是finish()退出。
引數為false代表只有當前activity是task根,指應用啟動的第一個activity時,才有效;
如果為true則忽略這個限制,任何activity都可以有效。只要Activity堆疊中本Activity是最後一個,就會將APP退到後臺。
moveTaskToBack呼叫後,task中activity的順序不會發生變化,例如A啟動B,B中呼叫此方法退到後臺,重新啟動應用會呼叫B中的onRestart-onStart-onResume方法,不會重新呼叫onCreate,而且在B中按下back鍵返回的還是A,這就是退到後臺的功能。
另外在activity中按下back鍵,實際是呼叫了finish方法,應用退出。雖然應用已經退出,但程序沒有被殺死,android中一個應用運行於獨立的一個虛擬機器例項中,所以在重新啟動應用時一個類中的靜態物件還保持著執行時的狀態,注意在合適位置復位這些狀態。
第二個問題:app按home鍵到桌面,再返回app不重啟app
這次開發遇到了,網上答案也很多,
問題:home鍵到桌面後,返回app,app重新打開了一遍,但原來的介面還在,只是在原來的介面上覆蓋了一層。
查詢答案後,發現很好解決:在AndroidManifest.xml裡邊,主activity裡邊。去掉:android:launchMode=""這一行程式碼即可;