几张图让你明白Android四大启动模式

前言

CVTE面试的时候答的最烂的一个题目了。废话很少说,由于只要学过Android都应该知道四个启动模式:standardsingleTopsingleTasksingleInstance面试

思惟导图

standard、singleTop、singleTask针对的任务栈都是当前对应的app进程的,而singleInstance指向整个系统。设计模式

standard — 标准模式

Activity的默认启动方式。app

standard图示

  • 特征:每次启动一个Activity都会建立一个实例。
  • 应用场景:默认状况。

singleTop — 栈顶复用

singleTop图示

  • 特征:若是在栈顶,就不在建立实例。反之则建立。
  • 应用场景:当前要跳转的页面已经在栈顶时,好比说消息通知跳转

singleTask — 栈内复用

singleTask图示

  • 特征:若是栈内存在,就将后入栈的实例所有弹出
  • 应用场景:有一个专用主页面做为基础的app,这样的app如今市面上也很是广泛存在,就好比一个Activity中嵌入ViewPager+BottomNavigationBar制做成的一个主页面同样,ViewPager中嵌入了不少的Fragment,这个时候若是是standardsingleTop的形式,很容易让应用卡顿。

注意点:post

  • 若是其余App进程开启了Activity1,这个时候会建立新的任务栈学习

  • 若是以该启动模式启动的Activity1已经活动在后台的一个任务栈中,那么启动后,后台任务栈会一块儿切换到前台。设计

singleInstance — 全局惟一

跟前三种启动模式不一样,他并不要求实例在同一个任务栈3d

singleInstance图示

  • 特征:系统中只会有一个实例。
  • 应用场景:系统内部的应用,好比电话、短信等功能,经过Intent进行传播时,固定的就会调用这些系统自带的应用,在本身的应用中通常比较少使用。

以上就是个人学习成果,若是有什么我没有思考到的地方或是文章内存在错误,欢迎与我分享。code


相关文章推荐:cdn

聊一聊设计模式(一)-- 六大原则blog

JVM必备基础知识(一) -- 类的加载机制

手撕AsyncTask

HandlerThread那些事儿

相关文章
相关标签/搜索