關(guān)于安卓intent啟動activity的幾種情況

先說第一種

我們一般寫的比較簡單的方法就是starActivity(new Intent(context,A.class)).這種啟動的方式很簡單,就是一個從當(dāng)前界面跳轉(zhuǎn)到下一個activity界面。

第二種

首先我們先要說一個問題,當(dāng)你有彈窗信息,或者通知欄里面出現(xiàn)了通知,然后你點擊進(jìn)去,不知道你有沒有在意,APP會在五秒鐘之后打開,當(dāng)然,有的不會 大多數(shù)還是會的?,F(xiàn)在我們就說一下這個問題

在谷歌的 Android API Guides 中,特意提醒開發(fā)者不要在后臺啟動 activity,包括在 Service 和 BroadcastReceiver 中,這樣的設(shè)計是為了避免在用戶毫不知情的情況下突然中斷用戶正在進(jìn)行的工作.

就是當(dāng)通過 home 鍵將當(dāng)前 activity 置于后臺時,任何在后臺startActivity 的操作都將會延遲 5 秒,除非該應(yīng)用獲取了 "android.permission.STOP_APP_SWITCHES" 權(quán)限.但是這個權(quán)限是系統(tǒng)級別的權(quán)限.

解決方法:

不能夠用傳統(tǒng)的startActivity來啟動Activity

Intent intent = new Intent(context, A.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(intent);

而是要用以下形式來啟動Activity:

Intent intent = new Intent(context, A.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

PendingIntent pendingIntent =

PendingIntent.getActivity(context, 0, intent, 0);

try {

pendingIntent.send();

} catch (PendingIntent.CanceledException e) {

e.printStackTrace();

}

OK,這種方式啟動activity,一般是用在有后臺任務(wù)的時候

第三種,帶返回值的啟動

starActivityforResult(),里面有兩個參數(shù),一個是intent,還有一個是requestcode,當(dāng)你啟動下一個界面的然后又關(guān)閉的時候,會得到一個返回值,這個返回值就是這個requestcode,你需要做的就是通過onActivityforResult()方法去進(jìn)行對這個requestcode進(jìn)行判斷,處理好相應(yīng)的邏輯



這個文章是我睡前寫的,手機(jī)上面實在不好打字

圖片發(fā)自簡書App
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容