如何知道我的应用程序的活动数量?

5

我在我的应用程序中有多个活动。请考虑以下情况...

活动A调用活动B。B调用C。当用户按下返回键时,C会生成通知并返回到B。现在再次按下返回键,那么A将被显示,并且再次按下返回键将终止A,并显示通知...现在,当用户按下通知图标时,活动C会被加载....到此为止,行为是正确的....现在用户按下返回键,我使用我的代码启动活动A,因为C是从通知中加载的。

另一个案例 活动A调用活动B。B调用C。当用户按下返回键时,C会生成通知并返回到B。现在用户按下HOME KEY。然后过一段时间选择通知图标,它将显示活动C。现在用户按下返回键,默认情况下会显示活动B(这正是我想要的)....但我的代码(因为C是从通知中加载的)...我正在显示活动A(当用户按下返回键时,活动B被显示)。

我想知道自己应用程序的活动计数,以便如果不是1,则可以避免执行我的代码来启动活动A。

到目前为止,我已经使用以下代码完成了这个问题

ActivityManager actM = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> listm = actM.getRunningTasks(1);
int iNumActivity = listm.get(0).numActivities;

但是使用此代码需要使用许可GET_TASKS... 我不太舒服,因为我没有跟踪其他应用程序的数据/活动计数。

如何解决这个问题? 是否有其他方法可以实现这一点?

编辑 如何知道自己应用程序的活动计数?

2个回答

0
一种方法是在每个 Activity 的 onResume() 中将当前 Activity 推入一个栈(单例),并在按下“Back”键时弹出它。这样,每当按下“Back”键时,您都会知道当前 Activity 栈的情况。由于这将被所有类共享,它将有助于存储值。

旋转和进程死亡可能会导致这个问题。 - EpicPandaForce

0
如果只是计数的问题...可以在一个类中创建一个静态计数变量,比如说Constants。 或者可能需要三个变量...这样每当你进入一个特定的类时,就会增加相应的静态公共变量。
编辑:您还可以在共享首选项中保留活动的计数。

谢谢您的建议。但是我在寻找其他的替代方案。 - JRC
2
进程终止将使您的计数器归零。 - EpicPandaForce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接