我是靠谱客的博主 文静身影,最近开发中收集的这篇文章主要介绍Android查询任务栈Task,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

大家都知道直接使用Application的Context去打开一个Activity在手机系统低于7.0时会报错:android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity。
Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用 Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)。喜欢研究源码的同学可以去深究一下。

今天要说的就是增加上述flag到底会有什么改变?

什么是任务栈(Task)?
任务是指在执行特定作业时与用户交互的一系列 Activity。 这些 Activity 按照各自的打开顺序排列在堆栈(即“返回栈”)中。其实就是以栈的结构(先进后出)将依次打开的activity记录.

为什么要用任务栈?
为了记录用户开启了那些activity,记录这些activity开启的先后顺序,google引入任务栈(task stack)概念,帮助维护好的用户体验。

如何查看当前系统的任务栈?
手机中 –> 长按home或者多任务键会进到 概览屏幕 的一个界面
命令行中 –> adb shell dumpsys activity
近期任务栈:
近期任务栈

其中的一个栈:
其中的一个栈

当前所有进程:
当前所有进程
这里面有我们的老朋友oom_adj,可以根据这个属性判断当前进程保活程度
详情请戳这里:进程保活之oom_adj级别查询
显示了所有现在正在运行的进程。
这里还有一些重要的进程组——持久系统进程(persistent system processes),前台系统进程(foreground processes),后台系统进程(background processes),最终缓存进程(finally cached processes)。
这些进程种类对于理解它是如何影响系统是非常重要的。

最后

以上就是文静身影为你收集整理的Android查询任务栈Task的全部内容,希望文章能够帮你解决Android查询任务栈Task所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部