从通知运行活动B并强制返回按钮以运行活动A.

时间:2011-12-07 11:30:50

标签: android android-activity

我的Android应用程序包含两个Activities

Activity A有一个按钮,可以使用Activity B启动Context.startActivity(Intent intent)

还有Notification以同样的方式打开活动。

如果我从此通知中启动B并按回按钮 - 它只会关闭B并且不会显示A,就像我带着正常情况一样去那里。

如果从没有历史记录堆栈的通知开始,是否可以强制B回到A

解决方案

正如 stefan Paul Lammertsma 所提到的,最好的方法是从通知开始A并在A中使用{{创建新意图1}} - 但不在B

我仔细研究了一下,发现如果我在onCreate()AndroidManifest活动设置了一个新属性:

A

将在名为

android:launchMode="singleTask" 活动中进行
A

如果onNewIntent(Intent intent) 包含从通知传递的额外值,我们应该checl - 如果是,那么我们调用新的Intent意图。

谢谢你们两位,并为下一个开发者带来好运; - )

3 个答案:

答案 0 :(得分:4)

我建议在其附加组件中使用一些标志来通知活动A(而不是B)。在A的onCreate()中,检查标志,并立即启动活动B.这将确保按回B将返回到A.

答案 1 :(得分:3)

实现这一目标的一种简单方法是从您的通知中实际启动活动A并使用标记立即调用活动B.

所以你只需要在你的通知中加入一个额外的意图,你必须检查活动A,如果这个额外存在,如果它存在,那么你启动活动B.

更新:另一种方式,但在我看来不太好,将覆盖您的活动B的onPause()方法并在那里调用活动A.

答案 2 :(得分:1)

也许不是最漂亮的解决方案,但仍然很快; 为意图启动 B ,“launchFromNotification”或类似内容添加一个布尔额外。
在活动Bs onCreate()中,您存储该布尔值以供以后使用 在活动Bs onBackPressed()中,您可以检查布尔值,如果为true,则在调用finish()之前启动活动A;

更漂亮的解决方案可能是从通知中启动活动A,并额外告诉它直接启动活动B.