概述
文章目录
- standard模式
- singleTop模式
- singleTask模式
- singleInstance模式
在AndroidManifest.xml中配置Activity时,可以配置android:launchMode,该属性支持用于配置Activity的加载模式,支持4个属性值:
- standard:标准模式,默认的加载模式。
- singleTop:Task栈顶单例模式。
- singleTask:Task内单例模式。
- singleInstance:全局单例模式。
Android采用Task来管理多个Activity,当我们启动一个应用时,Android就会为之创建一个Task,然后启动这个应用的入口Activity。我们可以将Task理解为Activity栈,Task以栈的形式来管理Activity:先启动的Activity被放在Task栈底,后启动的Activity被放在Task栈顶。但是Android并没有为Task提供API,所以我们不能真正访问Task,只能调用Activity的getTaskId()
方法来获取Activity所在的Task的ID。
standard模式
每次通过standard模式启动目标Activity时,Android总会为目标Activity创建一个新的实例,并将该Activity添加到Task栈中——这种模式下不会启动新的Task,新Activity将被添加到原有的Task中。
singleTop模式
与standard模式类似,不同的是,当将要启动的目标Activity位于Task栈顶时,系统不会重新创建目标Activity的实例,而是直接复用已有的Activity实例。
singleTask模式
使用singleTask模式可以保证在用一个Task内只有一个实例。
在该模式下启动目标Activity时,如果目标Activity不存在,则创建目标Activity并添加到Task栈顶;如果目标Activity存在且位于Task栈顶,则不会创建目标Activity;如果目标Activity存在但不位于Task栈顶,则将位于目标Activity之上的所有Activity移出Task栈,从而使得目标Activity位于栈顶。
singleInstance模式
该模式下启动目标Activity时有两种情况:
- 如果目标Activity不存在,系统会先创建一个全新的Task,在创建目标Activity的实例,并将它放入新的Task栈顶。
- 如果目标Activity已存在,无论它位于哪个应用程序中、位于哪个Task中,系统都会把该Activity所在的Task转到前台,从而使该Activity显示出来。
因此,采用singleInstance模式加载的Activity总是位于栈顶,且它所在的Task只包含这一个Activity。
最后
以上就是高挑冬天为你收集整理的4.4 Activity的4种加载模式的全部内容,希望文章能够帮你解决4.4 Activity的4种加载模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复