
前言
CVTE面试的时候答的最烂的一个题目了。废话不多说,因为只要学过Android都应该知道四个启动模式:standard
、singleTop
、singleTask
、singleInstance
。
思维导图

standard、singleTop、singleTask针对的任务栈都是当前对应的app进程的,而singleInstance指向整个系统。
standard — 标准模式
Activity的默认启动方式。

- 特征:每次启动一个Activity都会创建一个实例。
- 应用场景:默认情况。
singleTop — 栈顶复用

- 特征:如果在栈顶,就不在创建实例。反之则创建。
- 应用场景:当前要跳转的页面已经在栈顶时,比如说消息通知跳转
singleTask — 栈内复用

- 特征:如果栈内存在,就将后入栈的实例全部弹出。
- 应用场景:有一个专用主页面作为基础的app,这样的app现在市面上也非常普遍存在,就比如一个
Activity
中嵌入ViewPager
+BottomNavigationBar
制作成的一个主页面一样,ViewPager
中嵌入了很多的Fragment
,这个时候如果是standard
或singleTop
的形式,很容易让应用卡顿。
注意点:
- 如果其他App进程开启了Activity1,这个时候会创建新的任务栈
- 如果以该启动模式启动的Activity1已经活动在后台的一个任务栈中,那么启动后,后台任务栈会一起切换到前台。
singleInstance — 全局唯一
跟前三种启动模式不同,他并不要求实例在同一个任务栈

- 特征:系统中只会有一个实例。
- 应用场景:系统内部的应用,比如电话、短信等功能,通过
Intent
进行传播时,固定的就会调用这些系统自带的应用,在自己的应用中一般比较少使用。
最后
现在,几张图就可以轻松明白了!分享不易,大家可以关注我点个赞支持一下!
还有更多的学习内容已经上传到了我的GitHub,附上我的链接:https://github.com/Meng997998/AndroidJX
网友评论