美文网首页
Activity的启动模式

Activity的启动模式

作者: simit | 来源:发表于2018-10-01 23:51 被阅读0次

        Activity有四种启动模式:standard ,singleTop,singleTask,singleInstance。

    1,standard:是系统默认的启动模式,每次启动都会创建一个新的Activity实例。这个Activity的实例可以在同一个栈中也可以在不同的栈中,谁启动了这个Activity,这个Activity就属于启动它的那个Activity所在的栈。

    2,singleTop:新的Activity如果已经位于栈顶,那么此Activity不会被重新创建,它的onNewIntent方法会被调用。如果新的activity存在但不在栈顶那么此Activity会被重建。

    验证:Activity在栈顶时

    MainActivity 启动 BActivity 此时BActivity 位于栈顶 BActivity 再启动自身

    当BActivity 位于栈顶时,会走onNewIntent,不会创建新的实例。

    Activity不在栈顶时

    MainActivity启动AActivity, AActivity 启动BActivity 之后 BActivity再启动AActivity

    此时AActivity已经在栈中且不位于栈顶

    AActivity会创建新的实例

    3,singleTask:如果Activity的实例已经存在于此栈中,那么多次启动都不会创建新的Activity实例而是会调用Activity的onNewIntent方法,此种模式下Activity是以单例的形式存在的。

    验证:和singleTop 同样的操作再来一遍

    MainActivity启动AActivity, AActivity 启动BActivity 之后 BActivity再启动AActivity

    此时AActivity已经在栈中且不位于栈顶

    启动AActivity时不会创建新的Activity而是走onNewIntent方法。

    4,singleInstance:一个Activity单独的位于一个Activity栈中。Activity一旦被创建就会独自在一个新的任务栈中,再次启动此Activity除非所在任务栈被销毁否则只会走onNewIntent不会创建新的Activity实例。

    另外onNewIntent在onstart之前执行。

    相关文章

      网友评论

          本文标题:Activity的启动模式

          本文链接:https://www.haomeiwen.com/subject/nhnhyftx.html