三、理解Activity的启动模式

250 阅读1分钟

理解Activity的启动模式


问题1. Activity的启动模式有哪几种,分别用于什么场景?

Activity 一共有四种启动方式(launchMode)

standard: Activity会反复的加载到任务栈,不断的创建实例.

singleTop: Activity在顶部时唯一,栈顶复用模式,不会创建新的实例,而是调用 onNewIntent() 方法

singleTask: 任务栈唯一

singleInstance: 新建栈,整个操作系统中只有一个实例

使用场景:

standard: 感觉已经没有场景会用了....

singleTop: 栈顶唯一,处理点击通知查看的界面的时候适合,例如新闻推送,点击后进入的界面,每次点击进去的Activity会一直是那一个.

singleTask: 栈唯一,适合入口点,进入到此Activity的时候,会将此Activity之上的全部出栈.当此Activity使用finsh()的时候,也等同于所有Activity都finsh()掉了.

singleInstance: 适合与程序分离开的界面,例如闹钟提醒功能,界面不参与中间过程,共享Activity


问题2. 清晰地描述下onNewIntent和onConfigurationChanged这两个生命周期方法的场景?

onNewIntent 如果要启动的Activity已经有一个实例了,并且此Activity不会再去创建实例,那么就会调用onNewIntent,而不去调用onCreate.

onConfigurationChanged 是AndroidManifest.xml,申明configurationChanged配置时,Activity不会销毁重建,不走onCreate生命周期,而是走onConfigurationChanged. 例如改变屏幕方向、弹出软件盘和隐藏软键盘等场景