Activity本质和内部实现机制

今天把Activity全部内容精简一遍,activity最后一篇!

Activity本质和内部机制

与Activity相关的Framework层类

ActivityThread本质上不是一个线程,是一个java类,ActivityThread是所在主线程中的一个类,它的启动是调用main方法,其中内部有几个重点方法:

Looper.prepareMainLooper();
ActivityThread thread = new ActivityThread();
thread.attach(false);
Looper.loop()
ActivityThread的main()中,首先调用Looper.prepareMainLooper();然后调用ActivityThread()方法,但事实上这个方法并没有继承什么,是一个普通的方法,最重要的是attach()方法,这个方法主要与ActivityManagerService进行交互,首先调用ActivityManagerNative对象,这是一个远程代理接口,以获取远程代理对象。之后调用attachApplication(),这个也是对Bundle传输数据。

ActivityThread启动完成后如何通知AMS呢?主要的方法有:

IActivityManager mgr = ActivityManagerNative.getDefault();

mgr.attachApplication(mAppThread);

下面来看ApplicationThread,这是一个很关键的类,它是继承自ApplicationThreadNative类,ApplicationThreadNative类是一个Binder的子类,说明ApplicationThread需要与远程端进行通信,即与ActivityManagerService进行通信,通信的过程封装成一个Binder对象。

ActivityClientRecord是客户端Activity的一个描述的类,是对客户端的描述,


Context是一个接口,Activity其实是Context的一个子类。


Activity的生命周期的回调:

Instrumentation用于辅助创建Application, 对生命周期的管理,启动Activity。

ActivityManagerNative用于与远程Service进行数据交互

H handle也是与远程数据交互相关的类,调用了,handleLaunchActivity, performLaunchActivity。 classLoader加载相关Activity,Application对象创立,之后,activity.attach()


额,源码看的心力憔悴,认输,这次就先这样吧,等我酝酿一段时间再说吧……尴尬ing(口吐白沫中……)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值