FrameWork 之 Activity
来源:互联网 发布:python 多高斯拟合 编辑:程序博客网 时间:2024/05/17 00:04
Activity 与普通类 有什么区别?
Activity生命周期本质
Activity在AMS中的处理逻辑(Activity Manager Service)
ActivityThread是什么?
ActivityThread 是运行在 Activity主线程中的一个普通的java类.本身不是一个线程
在主线程方法中运行—->调用ActivityThread main()方法
(消息队列准备, 启动)
ActivityThread 源码分析
##main()
Looper.prepareMainLooper();//准备消息队列public static void prepareMainLooper(){ prepare(false); : : : .......}private static void prepare(boolean quitAllowed){ if(sThreadLocal.get()!=null){ throw new RuntimeException("Only one Looper may be created per Thread"); sThreadLocal.set(new Looper(quitAllowed);//创建一个消息队列 }}//可以看出这一步主要是创建一个消息队列###Looper.loop()开始循环处理消息###Thread.attach主要处理和AMS的交互,通信```javaprivate void attach(boolean system){ //ActivityManagerNative是AMS的远程代理对象,因为AMS在一个单独的线程当中 代理模式? final IActivityManger mgr= ActivityManagerNative.getDefault(); try{ mgr.attachApplication(mAppThread);//ApplictionThread类 调用远程binder文件 传输数据 }catch(){}}<div class="se-preview-section-delimiter"></div>###ApplicationThread<div class="se-preview-section-delimiter"></div>```javaprivate class ApplicationThread extends ApplicationThreadNative{//往下看下继承的类} public abstract class ApplicationThreadNative extends Binder implements IApplication//和AMS 通信的一个 Binder的具体实现类处理具体的逻辑,在ActivityThread中初始化
ActivityClientRecord
定义Activity的描述的记录,配置信息,Window等等等等..
Context是什么 –环境 相关资源
本身是一个接口.
Activity extends ContextThemeWrapper //Activity是Context的一个实现类public abstract class Context{ //定义了一些 Acitity所需资源/方法}ContextWrapper extends Context{ //具体实现Context mBase;public ContextWrapper(Context base){//传进来mbase mbase = base;} //for example @override public Resources getResources(){ return mBase.getResources(); }}//mbase 是Context的具体实现类class ContextImp extends Context{}
Activity生命周期具体回调
Instrumentation
本质:负责打开Activity的生命周期方法/创建Application对象 /启动Activity
for example:
startActivity();
startActivityForResult();最终都是调用此类
本质:辅助AMS管理Activity生命周期
ActivityManagerNative
本质:辅助AMS与客户端跨线程交互(结合前文理解)
H类 H extends Handler
本质:处理AMS发送过来的具体消息 (看图片)
框架层学习笔记,仅供参考,代码为手打,错误之处烦请指正,欢迎交流 qq:11417998
0 0
- FrameWork 之 Activity
- androoid framework学习之activity组件
- Framework之Activity 启动过程详解
- 《android framework常用api源码分析》之Activity启动流程
- Framework Activity启动过程
- Android源码剖析之Framework层实战版(Ams管理Activity启动)
- Activity生命周期在Framework层的体现
- stonecao Launcher、Framework(activity,statusbar)
- 【Android framework】am命令启动Activity流程
- 从Framework源码中看activity ,重新认识activity
- Zend FrameWork 之 Zend_Loader
- Zend Framework之Layout
- 深入浅出 Cocoa 之 Framework
- Entity Framework之犹豫不决
- Java之Collection Framework
- 深入浅出Cocoa之Framework
- 深入浅出 Cocoa 之 Framework
- 深入浅出Cocoa之Framework
- UVALive 6900 Road Repair [树分治+线段树]
- 用node.js进行微信公众平台的开发
- linux命令大全
- 文章标题
- Redis各种数据结构内存占用测试
- FrameWork 之 Activity
- Ubuntu设置ssh密钥登录
- Uiautomator使用
- INSERT ... ON DUP…
- nginx 正则表达式匹配入门篇
- 实战Nginx与PHP(FastCGI)的安装…
- FastCGI模块(FastCGI)
- MySQL锁表解决方法
- Linux配置syslog服务器及CentOS配…