我四处搜寻但找不到答案。
我的应用程序基于片段,MainActivity
是入口点。当用户单击通知时,我会使用PendingIntent
触发所需的行为,该MainActivity
包含需要调用的片段的特定标志。
当我需要的片段已经显示时,我的问题就出现了。通过PendingIntent
输入fragmentManager.getBackStackEntryCount()
后,Otto
将返回零。我想这是因为活动是一个不同于我已经运行的实例。然后再次调用相同的片段,这会弄乱我的UI(并且可能会因为HTTP_Request2
总线已经注册而崩溃)。
我的问题是:当通知触发活动时,检测正在运行的应用程序状态(即显示哪个片段)的最佳方法是什么?感谢。
答案 0 :(得分:1)
我猜你可以用FragmentManager课做到这一点。
你有几个有趣的方法。例如,findFragmentByTag(String tag)
使您能够知道是否存在具有特定TAG的片段。
另外,你确定你没有重新创建一个新的活动(在当前的活动之上)吗?
答案 1 :(得分:0)
感谢@Gordak的建议,我能够找出问题所在。我需要的是我的(待定)意图中的标志组合:
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_CLEAR_TOP);
这样,如果被调用的活动在顶部,它将不会被销毁(从而保留FragmentManager的backstack),但是方法onNewIntent(Intent intent)
将被触发,让你对它作出反应。这在文档中有描述
FLAG_ACTIVITY_CLEAR_TOP
。