Android App的启动过程
1.点击桌面App图标时,Launcher的startActivity()方法,通过Binder通信,调用SystemServer进程中AMS服务的startActivity方法,发起启动请求
2.SystemServer进程接收到请求后,向Zygote进程发送创建进程的请求
3.Zygote进程fork出App进程,并执行ActivityThread的main方法,创建ActivityThread线程,初始化MainLooper,主线程Handler,同时初始化ApplicationThread用于和AMS通信交互
4.App进程通过Binder向SystemServer进程发起attachApplication请求,这里实际上就是App进程通过Binder调用SystemServer进程中AMS的attachApplication方法,上面我们已经分析过,AMS的attachApplication方法的作用是将ApplicationThread对象与AMS绑定
5.SystemServer进程在收到attachApplication的请求,进行一些准备工作后,再通过binder IPC向App进程发送handleBindApplication请求(初始化Application并调用onCreate方法)和scheduleLaunchActivity请求(创建启动Activity)
6.App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送BIND_APPLICATION和LAUNCH_ACTIVITY消息,这里注意的是AMS和主线程并不直接通信,而是AMS和主线程的内部类ApplicationThread通过Binder通信,ApplicationThread再和主线程通过Handler消息交互
7.主线程在收到Message后,创建Application并调用onCreate方法,再通过反射机制创建目标Activity,并回调Activity.onCreate()等方法
8.到此,App便正式启动,开始进入Activity生命周期,执行onCreate/onStart/onResume方法,显示UI
Android App的启动过程相关推荐
- Android系统的启动过程
Android系统的启动过程可以简单地总结为以下几个流程: 加载BootLoader -> 初始化内核 -> 启动init进程 -> init进程fork出Zygote(孵化器)进程 ...
- android服务的启动过程,Android Service的启动过程(上)
原标题:Android Service的启动过程(上) (点击上方公众号,可快速关注) 来源:伯乐在线专栏作者 - xuyinhuan 链接:http://android.jobbole.com/85 ...
- Android系统进程Zygote启动过程的源代码分析
原文地址:http://blog.csdn.net/luoshengyang/article/details/6747696 Android应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口 ...
- c++builder启动了怎么停止_App 竟然是这样跑起来的 —— Android App/Activity 启动流程分析...
在我的上一篇文章: AJie:按下电源键后竟然发生了这一幕 -- Android 系统启动流程分析zhuanlan.zhihu.com 我们分析了系统在开机以后的一系列行为,其中最后一阶段 AMS( ...
- 安卓App的启动过程、安卓布局分类及布局和页面的关系
Android App 启动流程: 当你想要启动一个app时,首先得点击该app桌面图标.那点击图标时到底发生了什么呢?先看个理论知识 .Launcher: launcher其实就是一个app,从功能 ...
- Android系统SystemUI启动过程
SystemUI主要完成的功能有: (1).Status bars (2).Navigation bars (3).Notification (4).Lockscreen (5).Quick sett ...
- ActivityThread的理解和APP的启动过程
ActivityThread的理解和APP的启动过程 ActivityThread ActivityThread的初始化 主线程Looper的初始化 主线程Handler的初始化 Applicatio ...
- Android 解锁屏启动过程
Android 解锁屏启动过程 一. 开机启动 在开机过程中无线模块初始化时获取SIM卡,状态.在初始化完成后调用vm.systemReady()函数通知进入相应的Lock Screen进行解锁. 1 ...
- Android应用程序启动过程源代码分析(5)
Step 35. MainActivity.onCreate 这个函数定义在packages/experimental/Activity/src/shy/luo/activity/MainActivi ...
最新文章
- STL六大组件:分配器、容器、迭代器、算法、仿函数、适配器
- 在 2016 年做 PHP 开发是一种什么样的体验?
- 读写配置文件app.config
- 看完你就晓得正向代理和反向代理了!
- C# 这些年来受欢迎的特性
- 数据科学生命周期_数据科学项目生命周期第1部分
- linux语言的说明顺序有哪些,(linux常用头文件详解.doc
- 整理各个平台的访问入口及快速推文的方法
- poj Gone Fishing 枚举加贪心 当初做的很纠结啊!!终于A了,与大家分享一下经验
- 直播app系统源码,简单的登录界面(登录、注册、记住密码等按键)
- windows系统 cmd 下载python包的代理配置
- 中华酷联发展电商,警惕京东,且行且思考
- 京东放大镜效果的实现
- 域名未授权 / 该网站未授权,禁止使用 解决办法:
- OA自动化制造自动化
- 通通WPF随笔(3)——艺术二维码素材生成器
- Android Studio中如何隐藏顶部状态栏和标题栏
- 智能车图像处理11-斜入十字补线
- 乔治亚大学招收计算机视觉/深度学习/机器人/自动驾驶博士生from 2023 spring
- 关于Quartus II 13.0破解失败问题