Android Activity from Notification - FragmentManager backsta



我到处找,但找不到答案。我的应用程序是基于片段的,MainActivity是入口点。当用户点击通知时,我将使用包含特定标志的PendingIntent触发所需的行为,即需要调用哪些片段。

我的问题发生时,我需要的片段已经被显示。当MainActivity通过PendingIntent进入时,fragmentManager.getBackStackEntryCount()将返回零。我猜这是因为活动是一个不同的实例比我已经运行。然后同样的片段再次调用,这搞砸了我的UI(和潜在的崩溃,因为Otto总线已经被注册)。

我的问题是:什么是最好的方法来检测运行的应用程序的状态(即哪个片段正在显示)当活动从通知触发?谢谢。

我想你可以用FragmentManager类做到这一点。你有几个有趣的方法。例如,findFragmentByTag(String tag)使您能够知道具有特定TAG的Fragment是否存在。

还有,你确定你没有重新创建一个新的活动(在当前活动的顶部)吗?

多亏了@Gordak的建议,我才能够解决我的问题。我需要的是在我的(pending)Intent中组合一个标志:

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_CLEAR_TOP);

这样,如果被调用的活动是在顶部,它不会被销毁(从而保持FragmentManager的backstack),但方法onNewIntent(Intent intent)将被触发,让您对它作出反应。的文档中对此进行了描述FLAG_ACTIVITY_CLEAR_TOP

最新更新