Android activity的一些知識乾貨

我們知道,當用戶在activity界面按下返回鍵、HOME鍵時,有的手機會將應用掛入後臺運行,有的手機直接掛彩。

後者這種情況我們當然必須要避免的!!!

Android activity的一些知識乾貨

首先我們得知道關於activity一個方法

moveTaskToBack
這個方法是將前臺的activity任務轉到後臺運行,不瞭解的可以自行百度看看。
那麼我們監聽home和返回鍵,攔截後調用moveTaskToBack方法。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK){
moveTaskToBack(true);
}else if (keyCode==KeyEvent.KEYCODE_HOME){
moveTaskToBack(true);
}
return false;
}
Android activity的一些知識乾貨

這個解決了,那麼還有一些小問題。

如果這個時候我們想自己轉回那個activity呢,將activity調到棧頂呢?

比如當點擊通知欄回到activity、修改完信息回到個人資料activity等等,這個時候我們調用starActivity會重新創建一個新的activity。

這樣的結果肯定不是我們想要的。

方法有兩種:

一、在androidmanifest裡activity加上android:launchMode="singleTask",作用是告訴系統對我這個activity啟動的方法是單任務的,如果窗口已經存在,就不再創建,直接回到activity。

這種方法可行,但不推薦,在有的手機上,按下back和home鍵直接銷燬了,攔都攔不住!!!

二、這種方法原理同上,結果也是一樣的,但是就沒有那個問題了

Intent intent2 = new Intent(context.getApplicationContext(), Main2Activity.class);

intent2.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

context.startActivity(intent2);

Android activity的一些知識乾貨


分享到:


相關文章: