理解Activity的启动模式
问题1. Activity的启动模式有哪几种,分别用于什么场景?
Activity 一共有四种启动方式(launchMode),standard ,singleTop ,singleTask ,singleInstance.
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. 例如改变屏幕方向、弹出软件盘和隐藏软键盘等场景