Activity的启动模式(一)|青训营笔记
这是我参与「第四届青训营 」笔记创作活动的第1天
以下是通过课程学习记录的笔记,同时搜索各种资料进行补充
Activity一共有四种启动模式。Android 中默认启动模式为 standard,我们可以通过在 AndroidManifest.xml 的activity 标签下通过 launchMode 属性指定我们想要设置的启动模式
(1)standard模式
这是标准启动模式,每启动一次Activity,就会创建一个新的Activity的实例并将该实例置于栈顶
1.1 特点
- 每开启一次页面都会在任务栈中添加一个Activity,而只有任务栈中的Activity全部清除出栈时,任务栈被销毁,程序才会退出,这样就造成了用户体验差, 需要点击多次返回才可以把程序退出了。
- 每开启一次页面都会在任务栈中添加一个Activity还会造成数据冗余, 重复数据太多, 会导致内存溢出的问题(OOM)。
1.2 示意图
(2)singleTop
栈顶复用启动模式,顾名思义,若activity在栈顶则复用
2.1 特点
启动Activity,若需要创建的Activity位于任务栈栈顶,则Activity的实例不会重建,而是复用栈顶的实例(调用实例的onNewIntent(),可以通过intent传值,不调用onCreate()和onStart()),否则就创建该Activity新实例并置于栈顶
2.2 示意图
2.3 使用场景
singleTop适合接收通知启动的内容显示页面。例如,某个新闻客户端的新闻内容页面
假如一个新闻客户端,在通知栏收到了3条推送,点击每一条推送会打开新闻的详情页,如果为默认的启动模式的话,点击一次打开一个页面,会打开三个详情页,这肯定是不合理的。如果启动模式设置为singleTop,当点击第一条推送后,新闻详情页已经处于栈顶,当我们第二条和第三条推送的时候,只需要通过Intent传入相应的内容即可,并不会重新打开新的页面,这样就可以避免重复打开页面了。