美文网首页
Android的任务栈

Android的任务栈

作者: 雨来 | 来源:发表于2022-01-11 16:01 被阅读0次

什么是任务

任务是指在执行特定作业(任务 task)时与用户交互的activity。这些Activity按照各自打开的顺序 排列在堆栈(返回栈)中。设备的屏幕 桌面的图标(launcher)是多数据任务的的起点。当用户触摸应用启动器中的图标时,该用户的任务将出现在前台。如果应用不存在任务(应用未曾使用),则会创建一个新的任务,并且该应用的"主Activity将作为堆栈中的根Activity打开"。
当Activity启动另一个Activity时,该新Activity会被推送到堆栈的顶部,如果当前app只有一个栈 且app处于前台,那么这个栈顶的Activity用户应该是可见的,而启动栈顶这个Activity(启动者)仍然保留在堆栈中,但是是处于停止状态。Activity停止时系统会保留其用户信息 在Activity onSaveInstanceSate、 onRestoreInstanceState(Bundle savedInstanceState) 方法 具体可以查看这两个方法。当用户按"返回"按钮时,当前Activity(所谓当前Activity一定是用户可以看到的在栈顶的)会从堆栈顶部弹出(Activity被销毁 走onDestory方法)这里说销毁也不太严格 因为正常情况下会被销毁 在不存在内泄漏导致Activity回收不掉的情况。栈顶的Activity被销毁 它下面的Activity就会恢复执行(下面这个Activity露头你可以看到它了)。堆栈中的Activity永远不会重新排序,我们操作app的功能时 仅仅是 进入页面(压栈)退出页面(弹栈),因此返回栈(弹栈)以 "后进先出"的对象结构运行。
任务是一个有机整体,当用户开始新任务或通过点击"home键" 这个时候应用会切换到“后台”,在后台时该任务中的所有Activity全部停止,但是任务的返回栈仍旧不变,也就是说,当另一个任务发生时,该任务仅是失败焦点而已
如何更通过api查看当前应用中的任务

ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)
//再通过activityManager.getAppTasks() 可以获取当前app里有几个任务
activityManager.getAppTasks()

发现当前只有一个任务


image.png

同时通过这个任务我们可以查看当前栈顶的activity如下图

image.png
可以看到当前栈顶的Activity是 TCMainActivity这个页面
参考:
https://www.jianshu.com/p/59ab98d7850e

相关文章

网友评论

      本文标题:Android的任务栈

      本文链接:https://www.haomeiwen.com/subject/dpgbcrtx.html