先說第一種
我們一般寫的比較簡單的方法就是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ī)上面實在不好打字
