android面试题-ActivityRecord TaskRecord和ProcessRecord之间的关系
来源:互联网 发布:淘宝清退是什么意思 编辑:程序博客网 时间:2024/04/28 20:33
转自:http://blog.csdn.net/mwq384807683/article/details/72529285
源码分析相关面试题
- Volley源码分析
- 注解框架实现原理
- okhttp3.0源码分析
- onSaveInstanceState源码分析
Activity相关面试题
- 保存Activity的状态
- activity的启动模式原理(一)
- activity的启动模式原理(二)
- activity的启动模式原理(三)
- ActivityRecord TaskRecord和ProcessRecord之间的关系
- service里面startActivity抛异常?activity不会
Service相关面试题
- IntentService源码分析
与XMPP相关面试题
- 与XMPP相关试题一
- 与XMPP相关试题二
与性能优化相关面试题
- 与性能优化相关面试题一
- 与性能优化相关面试题二
- 与性能优化相关面试题三
- 与性能优化相关面试题四
- 与性能优化相关面试题五
- 与性能优化相关面试题六
- 与IPC机制相关面试题
与登录相关面试题
- oauth认证协议原理
- token产生的意义
- 微信扫一扫实现原理
与开发相关面试题
- 迭代开发的时候如何向前兼容新旧接口
- 手把手教你如何解决as jar包冲突
- context的原理分析
- 解决ViewPager.setCurrentItem中间很多页面切换方案
- 创建虚拟机时报错 Please file a bug against Android Studio
- 字体适配
与人事相关面试题
- 人事面试宝典
AMS提供了一个ArrayList mHistory来管理所有的activity,activity在AMS中的形式是ActivityRecord,task在AMS中的形式为TaskRecord,进程在AMS中的管理形式为ProcessRecord。如下图所示
从图中我们可以看出如下几点规则:
1) 所有的ActivityRecord会被存储在mHistory管理;
2) 每个ActivityRecord会对应到一个TaskRecord,并且有着相同TaskRecord的ActivityRecord在mHistory中会处在连续的位置;
3) 同一个TaskRecord的Activity可能分别处于不同的进程中,每个Activity所处的进程跟task没有关系;
Activity启动时ActivityManagerService会为其生成对应的ActivityRecord记录,并将其加入到回退栈(back stack)中,另外也会将ActivityRecord记录加入到某个Task中。请记住,ActivityRecord,backstack,Task都是ActivityManagerService的对象,由ActivityManagerService进程负责维护,而不是由应用进程维护。
在回退栈里属于同一个task的ActivityRecord会放在一起,也会形成栈的结构,也就是说后启动的Activity对应的ActivityRecord会放在task的栈顶
执行adb shell dumpsys activity命令,发现有以下输出:
Task id #30 TaskRecord{7f2f34a #30 A=com.maweiqi.second U=0 sz=2} Intent { flg=0x10000000 cmp=com.open.android.task1/.SecondActivity } Hist #1: ActivityRecord{a0f9ded u0 com.open.android.task3/.OtherActivity t30} Intent { flg=0x10400000 cmp=com.open.android.task3/.OtherActivity } ProcessRecord{12090b5 27543:com.open.android.task3/u0a62} Hist #0: ActivityRecord{1048af6 u0 com.open.android.task1/.SecondActivity t30} Intent { flg=0x10000000 cmp=com.open.android.task1/.SecondActivity } ProcessRecord{5bc013e 26035:com.open.android.task1/u0a59} Task id #31 TaskRecord{dce52bb #31 A=com.open.android.task3 U=0 sz=1} Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.open.android.task3/.MainActivity } Hist #0: ActivityRecord{f9e58c5 u0 com.open.android.task3/.MainActivity t31} Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.open.android.task3/.MainActivity } ProcessRecord{12090b5 27543:com.open.android.task3/u0a62} Task id #29 TaskRecord{5b063d8 #29 A=com.open.android.task1 U=0 sz=1} Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.open.android.task1/.MainActivity } Hist #0: ActivityRecord{689947d u0 com.open.android.task1/.MainActivity t29} Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.open.android.task1/.MainActivity } ProcessRecord{5bc013e 26035:com.open.android.task1/u0a59}Running activities (most recent first): TaskRecord{7f2f34a #30 A=com.maweiqi.second U=0 sz=2} Run #3: ActivityRecord{a0f9ded u0 com.open.android.task3/.OtherActivity t30} TaskRecord{dce52bb #31 A=com.open.android.task3 U=0 sz=1} Run #2: ActivityRecord{f9e58c5 u0 com.open.android.task3/.MainActivity t31} TaskRecord{7f2f34a #30 A=com.maweiqi.second U=0 sz=2} Run #1: ActivityRecord{1048af6 u0 com.open.android.task1/.SecondActivity t30} TaskRecord{5b063d8 #29 A=com.open.android.task1 U=0 sz=1} Run #0: ActivityRecord{689947d u0 com.open.android.task1/.MainActivity t29}mResumedActivity: ActivityRecord{a0f9ded u0 com.open.android.task3/.OtherActivity t30}
从图对应文字在对应adb输出,这几个基本概念大家估计就清楚了。
- android面试题-ActivityRecord TaskRecord和ProcessRecord之间的关系
- android面试题-ActivityRecord TaskRecord和ProcessRecord之间的关系
- TaskRecord ActivityRecord ActivityStack之间的关系
- TaskRecord、ActivityRecord 和 ActivityStack的关系
- ActivityRecord、TaskRecord、ActivityStack
- ActivityRecord、TaskRecord、ActivityStack
- [Android面试题-2] Activity和进程的关系
- 【面向对象程序设计常见面试题】类和对象之间的关系是什么?(11)
- java面试题五 hashtable和hashMap之间的区别
- 集合和数组之间的转换(面试题)
- hibernate面试题 --- 类与类之间的有哪几种关系,并说明
- 2013-Java基础面试题-Java类与类之间的关系
- 和之间的关系
- android activity管理(五)之ActivityRecord的启动
- android activity管理(六)之ActivityRecord的回收
- Activity的代表ActivityRecord
- android的面试题
- Android的面试题
- linux设备驱动中device_init_wakeup
- Android数据库高手秘籍(一)——SQLite命令
- table里的css
- Java获取package下所有的class对象,根据包名获取class字节码(普通文件包和Jar文件包)
- 如何在PHP中开启GD库支持
- android面试题-ActivityRecord TaskRecord和ProcessRecord之间的关系
- [编程题] 回文串 java 蘑菇街2016研发工程师在线编程题
- 嵌入式Linux+arm+ Java
- 友盟崩溃分析方法
- C++中结构体占字节数(sizeof)
- css3—transition、transform
- linux重启php和nginx的方法
- OpenStack LBaaS之LBaaS
- redis linux