我的申请中有多项活动。 请考虑以下案例......
活动A调用Acitivy B.B呼叫C.当用户按下后退键C生成通知并进入B.现在再次按下,这样A将显示,再次返回键也将终止A并显示通知。 ..现在,当用户按下通知图标时,活动C被加载....直到这部分行为正确....现在用户按下,我使用我的代码启动活动A,因为C是从通知加载的。
另一个案例 活动A调用Acitivy B.B调用C.当用户按下键时,C生成通知并进入B.现在用户按下HOME KEY。然后在一段时间后选择通知图标,它将显示活动C.现在用户按下返回键,默认情况下它显示活动B(我想要的)....但是我的代码(作为C从通知加载)... im显示活动A(n用户按下然后显示活动B)。
我想知道我自己的应用程序的活动计数,这样我就可以避免执行我的代码来启动活动A(如果它不是1)。
到目前为止,我已使用以下代码
完成此操作ActivityManager actM = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> listm = actM.getRunningTasks(1);
int iNumActivity = listm.get(0).numActivities;
但是使用此代码需要使用权限GET_TASKS ...我对此不满意,因为我没有跟踪任何其他应用程序数据/活动计数。
如何解决这个问题? 还有其他方法可以达到这个目的吗?
修改 的 如何知道自己申请的活动数?
答案 0 :(得分:1)
如果只计算是问题..在类中创建一个静态计数变量,表示常量。 或者可能是其中三个......所以每当你去一个特定的类......增加相应的静态公共变量。
编辑:您还可以在共享偏好设置中保留活动计数。
答案 1 :(得分:0)
一种方法是在每个活动中将显示的Activity从onResume()推送到堆栈(单例),并在按下“Back”时弹出它。这样,只要按下“后退”,您就会知道当前的活动堆栈。由于这将由所有类共享,因此将有助于存储值。