我正在创建一个我收到通知的应用程序。
在打开该通知时,我正在启动活动(使用标记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。有什么我想念的吗?
答案 0 :(得分:2)
您应该使用以下标志启动MainActivity:
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
之后不要忘记完成NotificationActivity
答案 1 :(得分:0)
当你的应用程序处于被杀死状态时(最近的任务中没有)你的应用程序后备堆栈将是空的。
现在您的应用程序堆栈有一个Root(Activity)概念。启动的应用程序的第一个活动将成为应用程序堆栈的Root。
当您从NotificationActivity和MainActivity按回来时,两个活动都将完成。现在,如果从最近的任务启动应用程序,则将从Back Stack启动根活动。
这是一个正常的Android行为,它始终启动Root 来自后台的活动
即使在WhatsApp中,您也会发现相同的行为。