1. 程式人生 > >app退出時,讓app在後臺執行,app按home鍵到桌面,再返回app不重啟app

app退出時,讓app在後臺執行,app按home鍵到桌面,再返回app不重啟app

第一個問題: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=""這一行程式碼即可;