Activity启动模式singleTask,singleInstance研究

Activity的四种启动模式是相当重要的知识点,给activity设置合适的启动模式有利于程序的运行。

四种启动模式中,singleTask,singleInstance最为重要。

 

Activity A设置为singleTask,能够保证Activity A在栈中只有一个实例,这个栈也允许存在其他的实例,无论是Activity A是在栈顶还是栈底,当有新的intent请求Activity A时,都不会创建新的实例,而是直接交给Activity A的实例来处理。

 

 

1.关于activity设置为singleInstance和singleTask的问题,当设置了此属性的时候,发现onActivityResult方法不好使了,经过查多方资料,发现当然设置此属性的时候,其实直接返回了取消结果返回的,主要原因是此activity实例其实是一直存在的。解决方法:如果跳转到另一个activity也是自己写的话,那么可以返回一个intent,当前activity在onNewIntent方法里处理,如果跳转到的另一个activity不是自己写的,那么只能用一个非singleInstance的activity中转下。 

 

再来介绍singleInstance,他和singleTask类似,不同点是singleInstance要求activity的实例不仅只有一个,并且整个task中只有一个activity实例,而singleTask所在的栈中允许存在其他activity的实例。

由此我们可以知道设置了singleInstance的activity也具有上面的特性,此外,启动的activity设置了singleInstance,那么无论被启动的activity有没有设置singleInstance,都无法获取返回值,可以验证一下,将HomeActivity的android:launchMode="singleInstance"

 

你可能感兴趣的:(singleInstance)