繁体   English   中英

从最近的任务启动应用程序时启动了错误的活动

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM