如何在android应用程序中找回栈的活动?

我有一个应用程序的活动回栈A – > B – > C – > D – > E。现在在活动E,我想知道我从后面的堆栈活动导航。 我如何find这个?

Solutions Collecting From Web of "如何在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(); } 

您可以使用“adb shell dumpsys活动活动”命令

以供参考http://www.onsandroid.com/2015/01/find-back-stack-activities-in-android.html

我认为你可以通过听取活动的变化来实现,通过registerActivityLifecycleCallbacks的这个API:

https://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks&#xFF09;

https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html

这将帮助你添加一堆你自己的类,并看到你想要的完整状态。

我不知道我是否做得好…你想回到以前的活动? 如果是这样,完成当前的活动,你会回到前一个。

实际上,您可以使用getRunningTasks从runningtaskinfo获取任务ID,然后通过比较任务ID使用getRecentTasks获取recenttaskinfo。 现在您可以使用startactivity重新启动该活动,并使用recenttaskinfo中的baseintent。

由于getRunningTasks(..)已被弃用,或者如果您不想为应用程序添加特殊权限,所以如果所有活动都是您的应用程序,则可以使用另一种解决scheme:您可以标记标识符(而不是活动本身可能需要垃圾收集)在一个单身人士StackLinkedListLinkedHashSet :在onPause()添加标识符的堆栈,并删除它onResume()

您可以检查堆栈的内容,以了解是否存在任何活动以及它们的创build顺序。

你可以清理你的代码,如果你的所有活动都是从你的应用程序的一个普通的基本活动派生出来的,那就忘记手动完成。

我build议您使用startActivityForResult而不是startActivity,然后为了检索原始/源活动 – 调用getCallingActivity()。getClassName()。

A怎么会知道它是从家里来的? 使用getIntent()它的getAction() – > android.intent.action.MAIN和getCategories() – > android.intent.category.LAUNCHER