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

如何在android应用程序中查找回栈活动?,android,back-stack,activity-stack,Android,Back Stack,Activity Stack,我有一个应用程序,它的活动后栈是A->B->C->D->E。现在在活动E,我想知道我导航的后栈活动。我如何找到这个???我不确定我是否理解它…你想回到上一个活动吗?如果是这样,请完成当前活动,您将返回到上一个活动。下面的代码可用于提取所有任务以及后堆栈中每个任务的顶部活动 ActivityManager m = (ActivityManager) ctx.getSystemService( ctx.ACTIVITY_SERVICE ); List<RunningTaskInfo> r

我有一个应用程序,它的活动后栈是A->B->C->D->E。现在在活动E,我想知道我导航的后栈活动。我如何找到这个???

我不确定我是否理解它…你想回到上一个活动吗?如果是这样,请完成当前活动,您将返回到上一个活动。

下面的代码可用于提取所有任务以及后堆栈中每个任务的顶部活动

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();
}
ActivityManager m=(ActivityManager)ctx.getSystemService(ctx.ACTIVITY_服务);
List runningTaskInfoList=m.getRunningTasks(10);
迭代器itr=runningTaskInfoList.Iterator();
while(itr.hasNext()){
RunningTaskInfo RunningTaskInfo=(RunningTaskInfo)itr.next();
int id=runningTaskInfo.id;
CharSequence desc=runningTaskInfo.description;
int numOfActivities=runningTaskInfo.numActivities;
字符串topActivity=runningTaskInfo.topActivity.getShortClassName();
}

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

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

由于
getRunningTasks(..)
已被弃用,或者如果您不想向应用程序添加特殊权限,请参考

,如果所有活动都是您的,这里有一个替代解决方案:您可以在单例
堆栈中标记标识符(不是活动本身,它可能需要垃圾收集),
LinkedList
LinkedHashSet
:在
onPause()
中将标识符添加到堆栈中,并在
onResume()中删除它

您可以检查该堆栈的内容,以了解是否存在任何活动及其创建的顺序


如果您的所有活动都来自应用程序的公共基本活动,您可以清理代码并忘记手动执行该操作。

我建议您使用
startActivityForResult
而不是
startActivity
,然后为了检索
源代码/源代码>活动-调用
getCallingActivity().getClassName()

A怎么知道它是从家里来的? 使用
getIntent()
its

getAction()->android.intent.action.MAIN


getCategories()->android.intent.category.LAUNCHER

我认为您可以通过registerActivityLifecycleCallbacks的这个API来监听活动的变化:


这将帮助您添加到自己类的堆栈中,并查看您希望的完整状态。

我想在活动E中找到,我已经从a、B、C、D导航到了类似的内容好吧,Rajdeep Dua有答案:p这与后堆栈不同-后堆栈可能涉及同一任务中的多个活动。我不认为有什么方法可以满足OP的要求。同时,这需要获得棒棒糖(sdk 21+)的任务许可证这是不推荐使用的,出于安全考虑,它只返回以前版本中提供的一小部分信息reasons@for3st它会返回当前应用程序的信息吗?我现在得到了堆栈中的活动列表,我怎么能杀死它?假设堆栈中的第三个活动