烤面筋_1

 

问:Activity A启动B,过程中的生命周期

 

activity A启动activity B的生命周期变化?B 不透明。

A onPause()—B onCreat()—B onStart()— B onResume() — A onStop();(B是半透明的,则A不会 onStop())

再关闭activity B的生命周期,B 不透明。

B onPause()—A onRestart()—A onStart()—A onResume()—B onStop()—B onDestroy()

 

问:Activty启动模式,什么时候会用到singleInstance?

  1. Standard 标准

  2. SingleTop 栈顶复用

  3. SingleTask 栈内复用

  4. SingleInstance 单实例模式,一种加强的SingleTask模式

启动模式的区别

  1. standard

    • 重复创建多个实例

    • 谁启动了这种模式的 Activity,新 Activity 就会运行在启动者所在的栈中

    • ApplicationContext 启动 standard 的 Activity,会报错

  2. singleTop

    • 如果位于栈顶则不会重复创建,不调用 onCreateonStart,直接调用 onNewIntent() 方法

  3. singleTask

    • 只要 Activity 在一个栈中有实例,多次启动此 Activity 都不会创建实例,也是直接调用 onNewIntent()

    • 启动 singleTask 的 Activity 时,系统会先找有没有想要的任务栈,没有就新建个任务栈;有就看栈里有没有实例

    • 栈内有实例,就会把该 Activity 调到栈顶,同时 clearTop(之前在它前面的都被清除)

    • 一般用于 MainActivity,因为回到首页后需要清除之前的页面

  4. singleInstance

    • 就是霸道一点的 singleTask

    • 启动后新建一个任务栈,这个栈里只会有它一个

    • 拨号、闹钟

应用场景

  1. standard:普通展示页面

  2. singleTop :适用于展示通知详情的Activity,在点开某个通知后,再点开一个通知就复用

  3. singleTask:应用主页,MainActivity

  4. singleInstance:拨号、闹钟


 

(本专题会在工作日每天更新,有错误的地方,望指正。)

 

posted @ 2021-08-09 23:50  小小卷  阅读(42)  评论(0)    收藏  举报