Activity的运行模式简单介绍

来源:互联网 发布:断食减肥知乎 编辑:程序博客网 时间:2024/06/06 01:50

         在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。

在android里,有4种activity的运行模式,分别为:(standard、singleTop、singleTask和singleInstance)

standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。

singleTop: 来了intent, 每次都创建新的实例,仅一个例外:当栈顶的activity 恰恰就是该activity的实例(即需要创建的实例)时,不再创建新实例。这解决了栈顶复用问题

singleTask: 来了intent后,检查栈中是否存在该activity的实例,如果存在就把intent发送给它,否则就创建一个新的该activity的实例,放入一个新的task栈的栈底。肯定位于一个task的栈底,而且栈中只能有它一个该activity实例,但允许其他activity加入该栈。解决了在一个task中共享一个activity。

singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。一旦该模式的activity的实例已经存在于某个栈中,任何应用在激活该activity时都会重用该栈中的实例,解决了多个task共享一个activity。
这些启动模式可以在功能清单文件AndroidManifest.xml中进行设置,中的launchMode属性。

下面做个测试,有三个Activity之间的跳转:ActivityA 、ActivityB、 activityC。

A------>B------>C------>B------>C------>B;

standard的返回顺序为:B------>C------>B------>C------>B------>A------>launch;

singleTop的返回顺序:  B------>C------>B------>C------>B------>A------>launch;

singleTask的返回顺序:B------>A------>launch;

singleInstance的返回顺序:B------>C------>A------>launch;


但是standard和singleTop有一点区别:

例:A------>B------>C------>C------>C;

standard的返回顺序为:C------>C------>C------>B------>A------>launch;

singleTop的返回顺序:C------>B------>A------>launch;

方便查看 :-)

原创粉丝点击