我的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
意图。
谢谢你们两位,并为下一个开发者带来好运; - )
答案 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.