Activity启动模式

来源:互联网 发布:财新网 知乎 编辑:程序博客网 时间:2024/05/29 14:37

转载请注明出处:TuTu

Activity的启动模式一共分为四种,分别是standard、singleTop、 singleTask 和 singleInstance,通过在AndroidManifest.xml 中指定android:launchMode属性来选择启动模式。

<activity    android:name=".SingleInstanceActivity"    android:label="singleInstance launchMode"    android:launchMode="standard">

standard 默认模式
在这个模式下,默认都会创建一个新的实例。每当启动一个新的活动都会创建一个新的实例,并进入返回栈中处于栈顶的位置。所以就会生成多个相同的实例,并叠加在一起。假如先后启动了A-B-C三个活动,那么按下返回键之后会先干掉C,B就会成为栈顶的首位,以此类推。

singleTop 栈顶复用模式
如果要开启的活动在任务栈的顶部已经存在,就不会创建新的实例,就会调用 onNewIntent() 方法。假如A活动已经启动,突然来了一个通知(也是A活动)打开通知之后就不会再创建实例了。

singleTask 栈内复用模式
在整个应用程序的上下文中只存在一个实例。每次启动该活动时系统首先 会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

singleInstance 单一实例模式
活动会启用一个新的返回栈来管理这个活动,并且任务栈里面只有他一个实例存在。这种模式很少被使用。实际使用的案例如Launcher的Activity或者100%确定只有一个Activity的应用。总之除非完全有必要,不然不建议使用这种模式。

除了在AndroidManifest.xml中直接设置launchMode,我们还可以通过Intent Flags来设置。

Intent intent = new Intent(MainActivity.this,ModeActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);startActivity(intent);
0 0
原创粉丝点击