Activity的启动模式

Activity 有四种启动模式

    在AndroidManifest.xml中给Activity进行配置,配置代码:

    android:launchModel=""

    四种模式:standard、singleTop、singleTask、singleInstance

    模式一

    standard模式,没有在AndroidManifest.xml文件中配置,或是配置为android:launchModel="standard"

    当启动一个Activity act的时候,不管Activity栈中是否已经有此act的实例,都会创建一个新的act的实例并置Activity栈的栈顶。

    模式二

    singleTop模式,在AndroidManifest.xml中配置为android:launchModel="singleTop"

    当启动一个Activity act的时候,如果Activity栈的栈顶是act的实例,那么系统将不创建新的act实例,而是沿用栈顶的act实例,并且会执行act中的onNewIntent方法

    如果Activity栈顶不是act的实例,则和standard模式处理方式一样。

    模式三

    singleTask模式,在AndroidManifest.xml中配置android:launchModel="singleTask"

    当启动一个Activity act的时候,如果Activity栈中,不管是栈顶还是栈的其它位置,只要含有act的实例,系统则不会创建新的act实例,而是把act实例提置栈顶,act实例之上的其他Activity实例被移除栈即销毁它们。并且会执行act的onNewIntent方法。

    如果Activity栈中不包含act实例,则和standard模式处理方式一样。

    模式四

    singleInstance模式,在AndroidManifest.xml中配置为android:launchModel="singleInstance"

    当启动一个Activity act的时候,系统先查询所有其他的Activity栈中是否包含act实例,如果包含则不创建,直接使用现有的act实例,并且调用onNewIntent方法。如果不存在,则会创建一个act实例,并且把新创建的act实例置一个新的栈中,新栈理论上只会有act这一个Activity。

       

你可能感兴趣的:(Activity的启动模式)