[转载]Andriod中的Context理解与分析(2)-Android开发进阶&经验分享-eoe Android开发者社区_Android开发论坛 - Powered by Discuz!

[转载]Andriod中的Context理解与分析(2)-Android开发进阶&经验分享-eoe Android开发者社区_Android开发论坛 – Powered by Discuz!.

Activity对应的Context


需要打开一个Activity的时候,ActivityManagerService会经过ApplicationThread的代理类
远程调用真正的ApplicationThread的scheduleLaunchActivity()方法(这个里把ActivityManagerService当成了Binder客户端,
在ActivityThread中的ApplicationThread对象才是真正的Binder服务端)。



代码片段1

415行创建了一个ActivityClientRecord的对象 ,这个对象用来管理Activity
417-427行,把ActivityManagerService远程传过来的参数赋值给这个对象


代码片段2

ActivityInfo是远程返回的一个包装Activity信息的实体类,实现了Parcelable接口

和上一篇文章一样,代码片段中的429行,调用H这个Handler实现类发消息到主线程的消息队列,然后,调用到

代码片段3

929行:通过getPackageInfoNoCheck()获得packegeInfo赋值给ActivityClientRecord的packageInfo变量,这样就把Activity和
一个程序关联上了。
看下下面的获取代码:

代码片段3



代码片段4
从以上代码可以看到,这个packageInfo是和Application中的packageInfo是同一个对象(同一个LoadedApk对象)。

回到代码片段3中的931行执行:handleLaunchActivity(r, null);

代码片段5

看下1663行,方法代码如下


…..

…….

从上面的代码可以看出和Application的创建过程类似,也是单独放进去一个ContextImpl对象。

Andriod中的Context理解与分析相关链接
(1)http://www.eoeandroid.com/thread-312457-1-1.html
(2)http://www.eoeandroid.com/thread-312978-1-1.html
(3)http://www.eoeandroid.com/thread-312979-1-1.html

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏