![](/img/trans.png)
[英]Android: Activity is using old intent if launching app from Recent Task
[英]Wrong Activity launched, when launching application from recent task
我正在創建一個接收通知的應用程序。
在打開該通知時,我正在按返回鍵啟動活動(使用標志FLAG_ACTIVITY_NEW_TASK
創建),我正在啟動主應用程序活動(使用標志FLAG_ACTIVITY_CLEAR_TOP
)。
現在再次按返回鍵(用於關閉應用程序)。
問題是:當我轉到最近的任務並打開該應用程序時,通知活動會啟動,而應用程序的主要活動應該會啟動。
任何人都可以給我任何建議嗎?
當我在 BroadcastReceiver 擴展類中收到通知時在下面添加了片段 -
Intent new_intent = new Intent(context, NotificationActivity.class);
new_intent.putExtra(NotificationActivity.EXTRA_NOTIFICATION_ID, id);
new_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(new_intent);
在 NotificationActivity 的后退鍵上,我正在啟動主要活動 -
Intent new_intent = new Intent(context, MainActivity.class);
new_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(new_intent);
現在,當我通過后退鍵從應用程序返回並再次從最近的任務啟動應用程序時,它會向我顯示 NotificationActivity。 而它應該顯示應用程序的 MainActivity。 有什么我想念的嗎?
您應該使用以下標志啟動 MainActivity:
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
在此之后不要忘記完成 NotificationActivity
當您的應用程序處於終止狀態(不存在於最近的任務中)時,您的應用程序返回堆棧將為空。
現在,您的應用程序堆棧有一個根(活動)概念。 啟動的應用程序的第一個活動成為應用程序返回堆棧的根。
當您從 NotificationActivity 和 MainActivity 回按時,這兩個活動都將完成。 現在,如果您從最近的任務啟動應用程序,那么根活動將從后台堆棧啟動。
這是一個正常的 android 行為,它總是從后台堆棧啟動根活動
即使在 WhatsApp 中,您也會發現相同的行為。
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.