关于Activity的启动过程
来源:互联网 发布:淘宝哪家种子靠谱 编辑:程序博客网 时间:2024/06/13 20:31
1.startActivity有好几种重载,但它们最终都会调用startActivityForResult方法。
2.启动Activity真正的实现由ActivityManagerNative.getDefault的startActivity方法来完成。由于ActivityManagerNative.getDefault是一个IActivityManager
类型的Binder对象,而ActivityManagerService(简称AMS)继承自ActivityManagerNative,ActivityManagerNative又继承自Binder并实现了IActivityManger这个Binder接口,所以ActivityManagerNative.getDefault的具体实现是AMS。AMS中的Binder对象采用单例模式对外提供。
3.最后在ActivityStackSupervisor中的realStartActivityLocked方法中调用了app.thread.scheduleLaunchActivity()方法。其中app.thread的类型为IApplicationThread,IApplicationThread继承自IInterface,并在声明了一系列启动、停止Activity和Service的方法。
4.IApplicationThread的具体实现为ActivityThread中的内部类ApplicationThread。ApplicationThread继承自ApplicationThreadNative,而ApplicationThreadNative继承自Binder并实现了IApplicationThread接口。
5.所以最终Activity的启动过程回到了ApplicationThread中,ApplicationThread通过scheduleLaunchActivity方法来启动Activity。
6.scheduleLaunchActivity的实现很简单,发送一个启动Activity的消息给一个名叫H的Handler处理,Handler又调用了ActivityThread的handleLanuchActivity方法来实现,handleLanuchActivity又最终调用了performLanuchActivity方法。
从ActivityClientRecord中获取待启动的Activity的组件信息、
通过Instrumentation的newActivity方法使用类加载器创建Activity对象、
通过LoadedApk的makeApplication方法来尝试创建Application对象(如果创建过就不再创建,所以一个应用只有一个Application对象)、
创建ContextImpl对象并通过Activity的attach方法来完成一些重要数据的初始化,并跟Activity建立关联(ContextImpl是Context的具体实现),在attach方法中Activity还会完成Window的创建并建立自己和Window的关联,这样当Window接收到外部输入事件后就可以将事件传递给Activity。
8.mInstrumentation.callActivityOnCreate(),这样Activity的onCreate被调用,Activity完成整个启动过程。
- 关于Activity的启动过程
- 启动Activity的过程
- Activity启动的过程
- Activity的启动过程
- Activity的启动过程
- Activity的启动过程
- Activity启动的过程
- Activity的启动过程
- Activity的启动过程
- Activity的启动过程
- activity 的启动过程
- Activity练习 一 关于Activity A的启动Activity B的过程
- 关于Activity的启动
- activity的启动过程分析
- Activity组件的启动过程
- Activity组件的启动过程
- Activity的启动过程详解
- Activity组件的启动过程
- 错误:dyld: Library not loaded
- spring,mybatis事务管理配置与@Transactional注解使用
- 定位方法,以及纠偏的调用
- JSON.stringify 语法实例讲解
- iOS开发-玩玩渐变导航栏
- 关于Activity的启动过程
- 水晶报表VS2008使用
- scrollview拦截子控件的滑动
- CentOS使用EPEL YUM源教程
- QEMU 使用的镜像文件:qcow2 与 raw
- 图像配准中的变换操作
- 【Xibo】Xibo汉化指南
- Service的启动(startService)
- leetcode:sort-list