1.Activity的生命周期方法有哪些
onCreate()
onStart()
onRestart()
onResume()
onPause()
onStop()
onDestory()
2.当Activity A 被创建时,会走什么样的生命周期
当Activity被创建时,流程是:Activity启动->onCreate()->onStart()->onResume()
3.当Activity A 被创建后,点击Home键,会走什么样的生命周期了
当点击Home键时,流程是:Activity不可见->onPause()->onStop()
4.当Activity A 被创建后,跳转到新的Activity B,Activity A 和 Activity B 分别会走什么样的生命周期?
Activity A的流程是 : onPause() -> onStop() ,但是若Activity B 是透明的主题,那Actvity A 将不走onStop()
Activity B的流程是 : onCreate() -> onStart() -> onResume()
5.当点击返回键时,Activity会走什么样的生命周期?
Activity A的流程是:onRestart()->onStart()->onResume()
Activity B的流程是:onPause()->onStop()->onDestory()
6.Activity的四种启动模式
-
Stardand
默认启动方式。其特点是当跳转某个Activity时,无论该Activity是否有被创建过。都将重新创建一个新的Activity实例放入栈顶
-
SingleTop
栈顶复用模式。其特点时当跳转某个Activity时,会判断该Activity是否在栈顶存在,若在栈顶存在,则直接复用该Activity的实例,调用onNewIntent()方法,不会重新创建一个新的实例,反之不管之前是否创建过该Activity的实例,都将重新创建一个Activity实例放入栈顶
-
SingleTask
栈内复用模式。其特点时当跳转某个Activity时,会判断该Activity是否在栈中存在,若在栈中存在,则直接复用该Activity的实例,调用onNewIntent()方法,不会重新创建一个新的实例,反之将重新创建一个Activity实例放入栈顶
-
SingleInstance
全局单例模式。它的特点和SingleTask类似,唯一的区别是他是单独存在一个进程中的
7.Activity的热启动和冷启动
-
冷启动
-
定义
当启动应用时,若后台没有该应用的进程,系统会创建一个进程分配给这个应用
-
特点
冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再去创建MainActivity类(测量,布局,绘制),最后显示在界面上
-
启动流程
当点击app的应用图标时,系统会从zygote进程中fork一份进程分配给该应用,之后会创建和初始化Application类,创建MainActivity类,加载Theme主题中的一些样式属性给MainActivity以及配置Activity的一些属性,之后再inflate,当onCreate/onStart/onRestart的方法走完之后才进行measure/layout/draw,最后显示再屏幕上 Application的构造器方法->attachBaseContext()-> onCreate()->Activity的构造方法->onCrete()->配置主题背景属性->onStart()->onResume()->measure/layout/draw->显示再界面上
-
-
热启动
-
定义
当启动应用时,若后台已有该应用的进程,那么则直接通过该进程启动应用
-
特点
热启动因为会从已有的进程中启动。所以不会再创建和初始化Application类了,会直接去创建和初始化MainActivity类(测量,布局,绘制)
-
-
启动时间检测adb命令
adb shell am start -W PackageName/ActivityName
启动优化方案
- 尽量不要让Application参与业务的操作,
- 尽量不要再Application中进行一些耗时操作,即使进行初始化操作也不是必须全部都需要马上促使话,可以将其放入一个线程池中根据优先级进行初始化以及延时操作
- 不要以静态变量的方式再Application进行数据的保存
- 尽量减少启动页的布局的复杂性,布局深度,因为View的绘制过程是很耗性能的
,可以将其放入一个线程池中根据优先级进行初始化以及延时操作
- 不要以静态变量的方式再Application进行数据的保存
- 尽量减少启动页的布局的复杂性,布局深度,因为View的绘制过程是很耗性能的