info:ActivityInfo,Activity中代码和AndroidManifest设置的节点信息,如launchMode
简述android概述launcherFromPackage:启动activity的包名
taskAffinity:activity希望归属的栈
task:TaskRecord,Activity所在的TaskRecord
app:ProcessRecord,ActivityRecord所在的应⽤程序进程
state:ActivityState,当前activity的状态
icon:Activity的图标资源和标致符
theme:Activity的主题资源标识符
TaskRecord:⽤来描述⼀个Activity任务栈
taskId:任务栈的唯⼀标识符
affinity:任务栈的倾向性
Intent:启动这个activity的intent
mActivites:ArrayList<ActivityRecord>,按照历史顺序排列的Activity记录
mStack:ActivityStack,当前归属的ActivityStack
mService:AMS的引⽤
ActivityStack:⽤来管理系统所有的Activity,内部维护了Activity的所有状态,特殊状态的Activity以及和Activity相关的列表等数据。
6. Activity栈管理
Activity是放⼊Activity任务栈中的,有了任务栈,系统和开发者就能更好地应⽤和管理Activity,来完成各种业务逻辑Activity任务栈模型
Activity任务栈由多种数据结构共同组合⽽成。其中ActivityRecord⽤来记录⼀个Activity的所有信息。⼀个TaskRecord包含了⼀个或多个ActivityRecord,TaskRecord⽤来表⽰Activity的任务栈。ActivityStack⼜包含了⼀个或者多个TaskRecord,它是TaskRecord的管理者。Activity栈管理是建⽴在Activity栈模型之上的,有了栈管理,就可以对应⽤程序进⾏操作,应⽤程序可以复⽤⾃⾝应⽤中以及其他应⽤的Activity,节省资源。
Launch Mode:⽤于设置Activity的启动⽅式,⽆论是哪种启动⽅式,所启动的Activity都会位于Activity的栈顶,主要有4种模式:
standerd:默认模式,每次启动Activity都会创建⼀个新的Activity实例
singleTop:如果要启动的Activity已经在栈顶,则不会重新创建Activity,同时该Activity的onNewIntent()会被调⽤。如果要启动的Activity不在栈顶,则会重新创建该Activity实例
singleTask:如果要启动的Activity已经存在与它想要归属的栈中,那么不会创建该Activity的实例,会将栈中所有该Activity上的Activity 出栈,同时该Activity的onNewIntent()被调⽤。如果要启动的Activity不存在于它想要归属的栈中,并且该栈存在,则会创建该Activity 实例⼊栈。如果要启动的Activity想要归属的栈不存在,则新创建⼀个新栈,然后创建该Activity并⼊栈。
singleInstance:和singeTask基本类似,不同的是启动Activity时,⾸先要创建⼀个新栈,然后创建该Activity实例并⼊栈,新栈只会存在该Activity⼀个实例。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。