俗话说,要想优化好,流程不可少。作为一款App的开发者,首先要把它的启动流程做好了,简单明了的启动流程不仅拥有很好的体验感,还能获得更多用户对App的肯定。本篇文章就带大家了解下app启动流程的三个进程和六个大类!

一、三个进程

1、Launcher进程:整个App启动流程的起点,负责接收用户点击屏幕事件,它其实就是一个Activity,里面实现了点击事件,长按事件,触摸等事件,可以这么理解,把Launcher想象成一个总的Activity,屏幕上各种App的Icon就是这个Activity的button,当点击Icon时,会从Launcher跳转到其他页面。

2、SystemServer进程:这个进程在整个的Android进程中是非常重要的一个,地位和Zygote等同,它是属于Application Framework层的,Android中的所有服务,例如AMS, WindowsManager, PackageManagerService等等都是由这个SystemServer fork出来的。

3、App进程:你要启动的App所运行的进程。

二、六个大类

1、ActivityManagerService:(AMS)AMS是Android中最核心的服务之一,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块相类似,因此它在Android中非常重要,它本身也是一个Binder的实现类。

2、Instrumentation:监控应用程序和系统的交互。

3、ActivityThread:应用的入口类,通过调用main方法,开启消息循环队列。ActivityThread所在的线程被称为主线程。

4、ApplicationThread:ApplicationThread提供Binder通讯接口,AMS则通过代理调用此App进程的本地方法。

5、ActivityManagerProxy:AMS服务在当前进程的代理类,负责与AMS通信。

6、ApplicationThreadProxy:ApplicationThread在AMS服务中的代理类,负责与ApplicationThread通信。

可以说,APP启动的流程就是通过这六个大类在这三个进程之间不断通信的过程。

启动流程

1、Launcher响应用户点击,通知AMS。

启动的起点发生在Launcher活动中,启动一个app说简单点就是启动一个Activity,那么我们说过所有组件的启动,切换,调度都由AMS来负责的,所以第一步就是Launcher响应了用户的点击事件,然后通知AMS。

2、AMS响应Launcher进程请求

AMS得到Launcher的通知,就需要响应这个通知,主要就是新建一个Task去准备启动Activity,并且告诉Launcher你可以休息了(Paused)。

3、Launcher进程挂起Launcher,再次通知AMS

Launcher得到AMS让自己“休息”的消息,那么就直接挂起,并告诉AMS我已经Paused了。

4、AMS创建新的进程

AMS知道了Launcher已经挂起之后,就可以放心的为新的Activity准备启动工作了,首先,APP肯定需要一个新的进程去进行运行,所以需要创建一个新进程,这个过程是需要Zygote参与的,AMS通过Socket去和Zygote协商,如果需要创建进程,那么就会fork自身,创建一个线程,新的进程会导入ActivityThread类,这就是每一个应用程序都有一个ActivityThread与之对应的原因。

5、应用进程初始化

进程创建好了,通过调用上述的ActivityThread的main方法,这是应用程序的入口,在这里开启消息循环队列,这也是主线程默认绑定Looper的原因。

6、在AMS中注册应用进程,启动启动栈顶页面

这时候,App还没有启动完,要永远记住,四大组建的启动都需要AMS去启动,将上述的应用进程信息注册到AMS中,AMS再在堆栈顶部取得要启动的Activity,通过一系列链式调用去完成App启动。

以上就是对于app启动流程的简单介绍了。每一款app都有它的启动流程,假如它启动的性能没有做好,用户在使用时会降低信任感和使用体验,这样将会流失很多用户。那么我们要做的就是尽可能避免启动过程中出现性能问题,如何从源头避免?可以使用“友盟+u-apm”这款工具进行监测,帮助开发者监测app的问题。

另外,友盟+搭载在U-APM应用性能监控平台上推出了友盟+云真机服务,为移动开发者提供了灵活地测试操作界面,支持ADB调试、WEB远程调试、扫码、抓包、虚拟定位等测试功能,并提供了测试报告供开发者后续查看。

Android入门之APP启动流程相关推荐

  1. Android App启动流程详解

    前言:在之前的文章中已经写了apk的打包流程.安装流程,今天就是梳理一下apk系列的最后的流程--app启动流程.经过今天的梳理以后咱们就可以对apk包是怎么编译生成的.apk是怎么被安装到安卓手机的 ...

  2. android源码学习- APP启动流程(android12源码)

    前言: 百度一搜能找到很多讲APP启动流程的,但是往往要么就是太老旧(还是基于android6去分析的),要么就是不全(往往只讲了整个流程的一小部分).所以我结合网上现有的文章,以及源码的阅读和调试, ...

  3. 【鸿蒙OS开发入门】06 - 启动流程代码分析之KernelOS:之启动Linux-4.19 Kernel内核 启动init进程

    [鸿蒙OS开发入门]06 - 启动流程代码分析之KernelOS:之启动Linux-4.19 Kernel内核 一.head.S 启动start_kernel() 1.1 start_kernel() ...

  4. 【鸿蒙OS开发入门】13 - 启动流程代码分析之第一个用户态进程:init 进程 之 init 任务详解

    [鸿蒙OS开发入门]13 - 启动流程代码分析之第一个用户态进程:init 进程 之 init 任务详解 一. /etc/init.cfg 系统默认cfg:启动lo回环网卡 1.1 init.Hi35 ...

  5. Android Studio运行app启动模拟器一直卡在“Wating for target device to come online”解决方法

    Android Studio运行app启动模拟器一直卡在"Wating for target device to come online"的情况如何解决 在启动模拟器如果一直卡在& ...

  6. android app启动图片 加动画效果,Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案...

    Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案 大家在设计APP的末期,都会想给APP搞一些"花里胡哨"的特效来提高APP的B格.博主表示亲测有效 ...

  7. APP启动流程:从点击应用图标到Activity启动流程

    app启动流程: ①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求: ②system_server进程接收到请求后判 ...

  8. 【线上沙龙直播报名】App 启动流程详解及其优化

    点击上方"公众号"可以订阅哦 [美团点评技术沙龙Online]是美团点评技术团队推出的线上分享课程,每月2-3期,采用目前最火热的线上直播形式,邀请美团点评技术专家,面向互联网技术 ...

  9. 12.源码阅读(app启动流程-android api 26)

    activity的启动流程之前已经通过源码了解了,那么app的启动流程是怎样的,从我们按下app的图标,到应用启动起来显示出画面,中间都经历了什么? 安卓是基于java的,所以和java有一定的相似性 ...

最新文章

  1. phpmyadmin另类拿shell
  2. nodejs端口被占用。
  3. 当 python Pip 升级失败
  4. [UI] 精美UI界面欣赏[1]
  5. 为网站文字前面添加图标 在线调用 Font Awesome 字体icon小图标 美化网站
  6. stm32 IAP在线升级的个人经验以及实现方法
  7. oracle_j000,ORA-600[6749] 发生在 SYSMAN.MGMT_METRICS_RAW表
  8. 2017.9.4 斜堆 失败总结
  9. Java设计模式透析之 —— 单例(Singleton)
  10. MyBatis 拦截器(4)
  11. 关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理...
  12. wap游戏的一些理解
  13. AppScan安全扫描问题解决方案
  14. 京东到家开放平台消息系统-进阶之路
  15. PID详解3(摄像头循迹分析)
  16. CorelDRAW X7导出pdf发现部分有白边如何处理
  17. 【系统分析师之路】2017年系统分析师上午综合知识历年真题
  18. CentOS 安装软件提示”没有可用软件包XXX
  19. JMS JMS背景 概述 JMS术语
  20. 计算机网络基础及应用教程,计算机网络基础及应用教程

热门文章

  1. pyqt5——窗口尺寸调节
  2. 资源 | 适合AI新手的9款人工智能开源软件
  3. 【Python从零开始】caffe2的安装过程(在win10+Python+VS2015的环境下,改成caffe2的安装)(2)
  4. [经验] Win7减肥攻略(删文件不删功能、简化优化系统不简优化性能)
  5. VisionPro——在脚本中调用自己封装的DLL
  6. Keil中的USE MicroLib说明
  7. 证件照小程序开发 | 自动抠图换背景换底色
  8. [计算模型]%90的银弹
  9. 补偿电容器串联电抗对无源LC滤波器性能的影响
  10. h61支持服务器内存吗,h61支持什么内存条