天天记录 - Android创建应用窗口分析1

以下是简单的流程图:


天天记录 - Android创建应用窗口分析1_第1张图片






其中步骤的简单描述:


类及方法 作用
ActivityThread.newActivity ClassLoader获取Activity对象
Instrumentation.attach 为Activity对象设置重要变量:
1 appContext作为Activity的BaseContext
2 this 当前当前ActivityThread对象,Activity内部可能需要主程序的引用
r 是 ActivityRecord对象
3 r.token  Ams中的HistoryRecord对象
4 r.parent 一个Activity嵌入到另外一个Activity内部,ActivityGroup的支持就是该变量

创建的Widnow对象赋值给Activity内部mWindow变量

mWindow.setCallback(this);
?? 设置该Window的Callback接口为当前的Activity对象 ?? 这就是为什么用户消息能够传递到Activity中的原因??
PolicyManager.makeNewWindow 为Activity添加Window对象
跟据com.android.internal.policy.impl.Policy配置不同的窗口类型

有两种Window实现,PhoneWindow和MidWidnow
前者是针对手机,后者针对便携上网设备
PhoneWindow.setWindowManager 1 参数为空,其内部创建LocalWindowManager对象
2 Ams中的Activity对应的HistoryRecord的Binder引用,该变量作为Window中的mAppToken的值
获取mWindowManager的值






你可能感兴趣的:(天天记录 - Android创建应用窗口分析1)