理解Activity的启动模式

336 阅读1分钟

问题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 . 例如改变屏幕方向、弹出软件盘和隐藏软键盘等场景