我有一个应用程序的活动回栈A - > B - > C - > D - > E。现在在活动E,我想知道从我的导航回栈的活动。我如何找到这个?如何在android应用程序中找回堆栈活动?
回答
我不确定自己能否顺利完成...您想回到之前的活动吗?如果是这样,完成当前的活动,你会回到前一个。
下面的代码可用于提取所有任务,并在后面堆栈中的每个任务中的顶级活动
ActivityManager m = (ActivityManager) ctx.getSystemService(ctx.ACTIVITY_SERVICE);
List<RunningTaskInfo> runningTaskInfoList = m.getRunningTasks(10);
Iterator<RunningTaskInfo> itr = runningTaskInfoList.iterator();
while(itr.hasNext()){
RunningTaskInfo runningTaskInfo = (RunningTaskInfo)itr.next();
int id = runningTaskInfo.id;
CharSequence desc= runningTaskInfo.description;
int numOfActivities = runningTaskInfo.numActivities;
String topActivity = runningTaskInfo.topActivity.getShortClassName();
}
实际上,你可以从runningtaskinfo使用getRunningTasks 和任务ID,然后,通过比较任务ID,使用getRecentTasks获取recenttaskinfo。 现在您可以使用startactivity和recenttaskinfo中的baseintent重新启动该活动。
您可以使用“亚行外壳dumpsys活动活动”命令
参考http://www.onsandroid.com/2015/01/find-back-stack-activities-in-android.html
我现在得到了堆栈中的活动列表,现在我怎么能杀死?让我们假设堆栈 –
中的第3个活动是否可以通过代码执行此操作? –
由于getRunningTasks(..)
已被弃用,或者如果你不想特殊权限,在此添加到您的应用程序如果所有的活动都是你的,你可以选择一个解决方案:你可以在一个单身人士标记一个标识符(不是活动本身是否需要垃圾收集)Stack
,LinkedList
或LinkedHashSet
:onPause()
a将标识符添加到堆栈并在onResume()
中删除。
您可以检查堆栈的内容以确定是否存在任何活动以及它们的创建顺序。
如果您的所有活动都是从您的应用程序的公共基本活动派生的,则可以清理您的代码并忘记手动执行此操作。
我建议您使用startActivityForResult而不是startActivity,然后为了检索源/源活动 - 调用getCallingActivity()。getClassName()。
A怎么会知道它是从家里来的? 使用getIntent()它的getAction() - > android.intent.action.MAIN 和getCategories() - > android.intent.category.LAUNCHER
我想你可以通过监听活动的变化做通过registerActivityLifecycleCallbacks这个API:
https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html
这将帮助你添加到自己的类的堆栈,看到完整的状态,如你所愿。
- 1. 如何从应用程序活动堆栈中分离Android应用程序小部件活动堆栈?
- 2. 在Android应用程序中处理活动堆栈
- 3. 如何从应用程序的堆栈活动中获取任何活动
- 4. Android活动堆栈
- 5. Android中的活动堆栈
- 6. Android中的活动堆栈
- 7. 如何在堆栈顶部启动活动而不是Xamarin中的启动器活动android应用程序
- 8. 如何限制Android应用程序堆栈上相同活动的数量
- 9. 如何操作Android活动堆栈?
- 10. 清除android堆栈并始终在某些活动上启动应用程序
- 11. 在Android中查看活动堆栈
- 12. 在Android中清除活动堆栈
- 13. 如何返回活动堆栈中某个活动?
- 14. android插入活动堆栈
- 15. Android活动堆栈管理
- 16. 清除活动堆栈android
- 17. Android活动堆栈问题
- 18. Android弹出活动堆栈
- 19. Android:搬运活动堆栈
- 20. Android:我如何从活动堆栈中完全删除活动?
- 21. saveInstanceState堆栈在活动中
- 22. Android应用程序堆栈未清除
- 23. Android应用程序堆栈视图
- 24. 活动堆栈
- 25. 如何在android下打印应用程序的堆栈?
- 26. Android如何在后台放置活动但不在堆栈中
- 27. Android如果在另一个应用程序启动之前打开应用程序的堆栈,该如何清除该应用程序的堆栈?
- 28. 在活动堆栈中查找活动位置
- 29. 活动堆栈的全局应用程序类
- 30. 获取我的应用程序活动 - 堆栈
我想在活动E找到我从A,B,C,D导航的东西 – azzits
好的,Rajdeep Dua有答案。 :P –