美文网首页
Activity的启动模式和适用场景

Activity的启动模式和适用场景

作者: 林祖朋 | 来源:发表于2018-05-03 16:44 被阅读27次

    1.standard

    standard作为默认的启动模式,其特点是多次启动同一个aty的时候,会创建多个activity实例
    而不会复用。
    适用场景:当前的任务的返回栈为a-b-c-d。d的启动模式为standard,当启动d的时候,返回栈
    中将会添加d的新实例,返回栈的结构为a-b-c-d-d。

    2.singletop

    singleTop是栈顶复用模式。就是当activity位于栈顶的时候,启动该activity,不会创建该activity,而是调用的该activity的onNewIntent方法。如activity不是位于栈顶,还是会创建新的实例。

    3.singleTask

    singleTask栈内复用模式,只要Activity在栈中存在,则每次启动该Acitivty时都不会创建新的Acitivity实例,井且该Acitivty之上的所有Activity都会出栈,
    适用场景:当前任务的返回栈是A-B-C-D,C启动模式是singleTask,启动C时,C的现有实例会通过onNewlntent()接收Intent,D会出栈,返回栈结构变为A-B-C。

    4.singleinstance

    与singleTask差不多,只是在启动Activity的时候不会将该Activity放入当前的返回栈,而是会新建一个返回栈单独管理该Acitivity,并且该Activity始终是返回栈中雎一的成员。
    适用场景:当前的任务的返回栈时A-B-C,另外D的启动模式是singleinstance,在栈中不存在D的实例,那么当C启动D时,D并不会加入到当前任务的返回栈,而是会新建一个返回栈去管D。

    下面需要注意:

    onNewIntent()和onConfigurationChanged()生命周期方法的场景

    onNewIntent():
    当Activity重新启动时,而不是创建新的Activity实例的时候,onNewlntent()将会在onRestart()和onResume()之前调用,也就是说四种启动模式中除了standard不会调用onNewlntent(),singleTop只有Activity处于栈顶的时候才会调用,singleTask和singleinstance则一定会调用。

    onConfigurationChanged:
    默认情况下Configuration()改变的时候,Activity会重新启动.而如果在AndroidManifest.xml中配置Andraid:configChanges属性,则当配置的属性发生変化的时候(例如配置android:configChanges="orientation“,则当屏慕方向发生变化的时候),不会去里新启动Acitivity,而是会调用onConfigurationChanged方法。

    相关文章

      网友评论

          本文标题:Activity的启动模式和适用场景

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