1.1
生命周期
正常情况系,Activity会经历如下几个阶段:
onCreate
:表示
Activity
正在被创建。
onRestart
:表示
Activity
正在被重新启动。
onStart
:表示
Activity
正在被启动,这时已经可见,但没有出现在前台无法进行交互。
onResume
:表示
Activity
已经可见,并且处于前台。
onPause
:表示
Activity
正在停止(可做一次保存状态停止动画等非耗时操作)。
onStop
:表示
Activity
即将停止(可进行重量级回收工作)。
onDestroy
:表示
Activity
即将被销毁。
![](https://i-blog.csdnimg.cn/blog_migrate/84c75941cc180ac8ffa48d58d7fbedf1.jpeg)
对于生命周期,通常情况:
第一次启动:
onCreate->onStart->onResume
;
打开新的
Activity
或者返回桌面:
onPause->onStop
。如果打开新的
Activity
为透明主题,则不会调
用
onStop
;
当回到原来
Activity
时:
onRestart->onStart->onResume;
当按下返回键:
onPause->onStop->onDestroy
1.2
启动模式
Activity
的启动模式有四种:
Standard
、
SingleTop
、
SingleTask
和
SingleInstance
。
Standard
:标准模式,也是默认模式。每次启动都会创建一个全新的实例。
SingleTop
:栈顶复用模式。这种模式下如果
Activity
位于栈顶,不会新建实例。
onNewIntent
会
被调用,接收新的请求信息,不会再调用用
onCreate
和
onStart
。
SingleTask
:栈内复用模式。升级版
singleTop
,如果栈内有实例,则复用,并会将该实例之上的
Activity
全部清除。
SingleInstance
:系统会为它创建一个单独的任务栈,并且这个实例独立运行在一个
task
中,这
个
task
只有这个实例,不允许有别的
Activity
存在(可以理解为手机内只有一个)。
1.3
启动流程
在理解
Activity
的启动流程之前,先让我们来看一下
Android
系统启动流程。总的来说,
Android
系统启
动流程的主要经历
init
进程
-> Zygote
进程
–> SystemServer
进程
–>
各种系统服务
–>
应用进程等阶段。
1.
启动电源以及系统启动
:当电源按下时引导芯片从预定义的地方(固化在
ROM
)开始执行,加载
引导程序
BootLoader
到
RAM
,然后执行。
2.
引导程序
BootLoader
:
BootLoader
是在
Android
系统开始运行前的一个小程序,主要用于把系统
OS
拉起来并运行。
3.
Linux
内核启动
:当内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当其完成系统
设置时,会先在系统文件中寻找
init.rc
文件,并启动
init
进程。
4.
init
进程启动
:初始化和启动属性服务,并且启动
Zygote
进程。
5.
Zygote
进程启动
:创建
JVM
并为其注册
JNI
方法,创建服务器端
Socket
,启动
SystemServer
进程。
6.
SystemServer
进程启动
:启动
Binder
线程池和
SystemServiceManager
,并且启动各种系统服
务。
7.
Launcher
启动
:被
SystemServer
进程启动的
AMS
会启动
Launcher
,
Launcher
启动后会将已安装 应用的快捷图标显示到系统桌面上。(系统桌面就是第一个应用程序,也叫Launcher)