Activity的总结

一:启动模式

Android中活动的启动模式分为:standard,singleTop,singleTask,singleInstance

使用方式:在ApplicationManifest.xml中通过给<activity>标签指定app:launchMode属性来选择启动模式

1.standard

standard是系统默认的启动方式,在standard模式下,每当启动一个新的活动的时候,他就会在返回栈中入栈(Android是使用返回栈管理活动),每次启动都会创建该活动的一个新的实例。

比如:我有一个FirstActivity.java已经处于栈顶,然后我从FirstActivity活动跳到FirstActivity活动后,栈中就会有两个FirstActivity活动,这就会导致,按两次返回才能退出应用程序。如图1.1所示。

Activity的总结

                                                                      图:1.1 standard模式示意图

2.singleTop

当当前活动已经处于栈顶的时候,系统将不进行重新创建活动的实例。

比如:

1.你现在处于FirstActivity活动,然后你跳转FirstActivity这个活动,你会发现栈中不会创建新的FirstActivity,因为你的FirstActivity已经处于栈顶了。然后你点击返回键,你的app将直接退出。

2.当你从FirstActivity跳转到SecondActivity再从SecondActivity跳转到FitstActiviyt的时候,你会发现栈中会存在两个FirstActivity,这是由于,从SecondActivity跳转的时候,栈顶是SecondActivity而不是FirstActivity所以系统会再次创建FirstActivity

如图:1.2所示

Activity的总结

                                                                      图:1.2 singleTop模式示意图

3.singleTask

singleTask可以解决singleTop中的由于FirstActivity不是处于栈顶导致他还会被重复创建的问题。

当启动模式设置为singleTask的时候,每次启动该活动时系统都会在返回栈中检查是否存在该活动的实例,如果发现已经存在了则直接使用,并把这个活动之上的所有活动统统出栈,如果没有则创建一个新的实例。

如图:1.3所示

Activity的总结

                                                                      图:1.3singleTask模式示意图

4.singleInstance

指定为singleInstance启动模式的活动会启用一个新的返回栈来管理这个活动

如图:1.4所示

Activity的总结

                                                                      图:1.4singleInstance模式示意图