在谷歌的 Android API Guides 中大溜,特意提醒開(kāi)發(fā)者不要在后臺(tái)啟動(dòng) activity残腌,包括在 Service 和 BroadcastReceiver 中抹估,這樣的設(shè)計(jì)是為了避免在用戶毫不知情的情況下突然中斷用戶正在進(jìn)行的工作.
就是當(dāng)通過(guò) home 鍵將當(dāng)前 activity 置于后臺(tái)時(shí)绍移,任何在后臺(tái)startActivity 的操作都將會(huì)延遲 5 秒集嵌,除非該應(yīng)用獲取了 "android.permission.STOP_APP_SWITCHES" 權(quán)限.但是這個(gè)權(quán)限是系統(tǒng)級(jí)別的權(quán)限.
解決方法:
不能夠用傳統(tǒng)的startActivity來(lái)啟動(dòng)Activity
Intent intent = new Intent(context, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
而是要用以下形式來(lái)啟動(dòng)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();
}