Android中关于standard、singleTop、singleTask、singleInstance四种启动模式的介绍 学习笔记

这篇博客和大家共同探讨一下Android下四种启动模式的介绍,先介绍一点相关知识
首先启动模式是针对activity的,在AndroidManifest.xml文件中application节点下,activity节点中进行配置launchMode属性,其次android系统会对每个APP维护一个任务栈(后进先出),默认情况下,每启动一个activity都会将其入栈。Android中关于standard、singleTop、singleTask、singleInstance四种启动模式的介绍 学习笔记_第1张图片
1.standard模式:standard`模式即默认模式,当activity为此种模式时,开启这个activity时不会进行任何检查,直接将新开启的activity入栈并跳转页面;

2.singleTop模式:当activity为此种模式时,开启这个activity会对当前栈顶activity进行检查,如果栈顶activity与待开启的activity一致(或者说为同一个activity),那么将复用栈顶acticity,而不会启动新的。举个例子,比如当前栈顶activity为A,而此时又需要启动A,那么将直接显示已有的。Android自带的浏览器的书签activity就是采用的就是此种启动模式;

3.singletask模式:当activity为此种模式时,开启这个activity会对整个任务栈进行检查,只要任务栈中存在相同的activity,就直接复用,并且会清空位于此activity上的所有activity,举个例子,比如当前栈中自下而上存在A,B,C,D四个activity,如果此时在D中开启A,那么将会跳转到位于栈底的A页面,并且会关闭栈中位于A页面之上的B,C,D三个页面。在关闭一个多页面activity并退回到桌面时,一种方案就是将MainActivity设为此种启动模式并重写键盘返回键;

4.singleInstance模式:当activity设定为此种模式时,那么系统将会为这个activity单独开启一个栈,在这个栈中只能存在这一个activity,并且对于一个activity这种栈只能开启一个,重复开启页面时会复用之前的activity。注意:在此种模式下,由于存在至少两个栈,所以用户按返回键依次退出页面时,需要考虑栈的次序问题,可以这么理解,当前显示的这个页面所处的栈先退出,等到这个栈全部清空后,在依次退出下一个栈。Android自带的电话程序中的接听电话activity就是采用此种启动模式的。

你可能感兴趣的:(Android学习之路)