在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。也可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。为了有效的利用有限的内存资源,这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。
Activity
有四种加载模式:
- standard
- singleTop
- singleTask
- singleInstance
设置的位置在AndroidManifest.xml文件中activity元素的android:launchMode属性:
<activity android:name=".Activity2" android:launchMode="singleTask"></activity>
standard
首先说standard模式,也就是默认模式,不需要配置launchMode
singleTop
singleTop和standard模式,都会将intent发送新的实例(后两种模式不发送到新的实例,如果已经有了的话)。不 过,singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例
singleTask
如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。
。
singleInstance
在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。