<activity android:name=".Activity2" android:launchMode="singleInstance">
加载模式一共四种,下面分别介绍:
standard:就是intent将发送给新的实例,所以每次跳转都会生成新的Activity。
singleTop:也是发送给新的实例,但不同于standard的一点是,请求的Activity正好位于栈顶时,不会构造新的实例,这时会执行onNewIntent()方法,所以生命周期变化为:onPause()-->onNewIntent()-->onResume()。可以这样记:top single---如果在栈顶,就使用这一个。
需要说明的是:如果栈里面已经有Activity的实例了,当intent到来时,会在onStart()之前调用onNewIntent()方法。
Android中有一个属性android:taskAffinity,是用来给Application或Activity设置“任务共用性”的,默认是包名。如果为一个singleTask模式的Activity设置了该属性,如:android:taskAffinity="com.example.demo.interviewtwo.aa"那么这个Activity跟该应用的其他Activity就不在同一个task(栈)了,可以使用this.getTaskId()打印出来看一下就清楚了。
singleInstance:将Activity放入一个栈中,并且这个栈中有且只有这一个Activity,不同应用的intent都由这个Activity接收和展示,实际就是不同应用共享同一个Activity,其实这种情况该Activity就相当于一个独立的应用了,不过这个应用仅有这一个Activity而已。