如何在android应用程序中查找回栈活动?
我有一个应用程序,它的活动后栈是A->B->C->D->E。现在在活动E,我想知道我导航的后栈活动。我如何找到这个???我不确定我是否理解它…你想回到上一个活动吗?如果是这样,请完成当前活动,您将返回到上一个活动。下面的代码可用于提取所有任务以及后堆栈中每个任务的顶部活动如何在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
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它会返回当前应用程序的信息吗?我现在得到了堆栈中的活动列表,我怎么能杀死它?假设堆栈中的第三个活动