Activity研究

  ActivityManagerService 业务的整个逻辑关系被各种复杂的数据结构包裹着,因此对ActivityManagerService 的分析主要就是对各种数据结构的分析,明白了这些数据结构,理解ActivityManagerService的业务内容就水到渠成了。

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管理之前,先了解一下这个规则。

详细见源文章:

http://blog.csdn.net/windskier/article/details/7096521

http://blog.csdn.net/windskier/article/details/7172710

时间: 2024-08-08 05:34:10

Activity研究的相关文章

Android 浏览器的研究(六)--- ADT调试通过Intent启动的Activity

今天遇到一个问题,在音乐应用里长按一个歌曲,在弹出菜单中选择搜索,在搜索选择框中选择浏览器.正常情况下应该打开浏览器并且使用默认的搜索引擎启动搜索,但是现在浏览器搜索界面并没有打开.首先想到的是打开浏览器工程,在相关位置设置断点,启动调试,发现一切处理正常,浏览器界面打开并正常启动了搜索过程.原来问题只发生在浏览器进程尚未启动,音乐应用使用Intent启动浏览器来进行搜索的情况下.这里分享一下这种情况下如何启动调试分析. 首先,该应用是其他应用通过Intent启动的,而我们需要调试它.在C/C+

android studio Activity标题研究

第一次研究时间:2016/7/30 一.头部标题取消 当前版本新建工程在 application中默认主题为 android:theme="@style/AppTheme" ,存在于res/values/styles.xml中代码,此为默认创建时不同版本可能不一样 <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.Da

Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了更好地阅读本文,你需要先阅读Android apk动态加载机制的研究这篇文章,在此文中,博主分析了Android中apk的动态加载机制,并在文章的最后指出需要解决的两个复杂问题:资源的访问和activity生命周期的管理,而本文将会分析这两个复杂问题的解决方法.需要说明的一点是,我们不可能调起任何一个未安装的

【Android】Activity生命周期研究

1. 为什么研究Activity什么周期 Activity是Android四大组件之一,是Android人必须要深刻理解的基础内容之一. 可以提高我们对相关问题的解决能力. 对一个问题如果不能深入理解,总觉得不踏实. 2. Activity生命周期详解 2.1 Activity生命周期图解 下图是Android开发官网的原图,清晰表达了Activity生命周期中每个方法所处位置及调用流程. 上图对Activity的执行流程表达很到位,但是对每个方法在执行时,我们的设备处于一种什么状态,其中注释表

android Application Component研究之Activity(一)

http://blog.csdn.net/windskier/article/details/7096521 终于下定决心写写ActivityManagerService的源码分析的文章了,ActivityManagerService 业务的整个逻辑关系被各种复杂的数据结构包裹着,因此对ActivityManagerService 的分析主要就是对各种数据结构的分析,明白了这些数据结构,理解ActivityManagerService的业务内容就水到渠成了. AMS提供了一个ArrayList

android Application Component研究之Activity(二)

http://blog.csdn.net/windskier/article/details/7172710 本文为原创文章,欢迎转载!转载时请注明出处:http://blog.csdn.net/windskier 上篇文章分析完了task的创建或者复用,接下来接着分析activity在启动过程中还有哪些工作需要去完成?首先给出整个activity的过程图. 1. Starting Window 当该activity运行在新的task中或者进程中时,需要在activity显示之前显示一个Star

android activity 跳转传值问题研究

Java代码   intent = new Intent(); intent.setClass(LoginActivity.this, RegActivity.class); Java代码   startActivity(intent); 因为刚学android.所以在很多的时候.不知道从什么地方下手! 可是,我曾经记得我恩师说过这么一句话! 不管那个编程语言.能把一个简单的登陆做的好!算是已经基本入门了! 所以我测试做了一个android的登陆! 可是在运行中!我想弄一个按钮,为"注册&quo

关于Activity调用Ondestroy()方法之后内存管理器为什么没有释放占用资源

最近在研究activity 执行了finish之后为什么还有很多资源没有释放的问题,关于这个原因的产生,最直接的想法就是activity里面还有很多资源没有手动释放,因为大家知道,activity只不过是一个高度抽象的UI组件,他仅仅只是一个控制界面的功能,包括分发touch时间还有一些列的作用,展示界面的工作是交给DecorView下的所有view以及viewGroup,所以我们可以认为activity持有了所有在他内部绑定的view的引用,但是这些view不仅仅只有activity的引用,还

开发中遇到的问题(一)——java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

1.错误描述: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 2.起因: 在Manifest中设置我的activity全屏 1 <activity android:name=".SplashActivity" 2 android:theme="@android:style/Theme.Black.No