Activity之launchMode(运行模式)

1、Activity launchMode(运行模式)共有4种,分别是:standard,singleTop,singleTask,    singleInstance浏览器

standard:(备注:standard是系统默认的启动模式。)ide

    标准启动模式,每次激活Activity 时都会建立Activity,并放入任务栈中。若是启动此ActivityIntent中没有设置FLAG_ACTIVITY_NEW_TASK标志,则这个Activity与启动他的Activity在同一个Task,若是设置了Activity请参考上面FLAG_ACTIVITY_NEW_TASK的详细说明,“launchMode”设置为"standard"Activity能够被实例化屡次,能够在Task中的任何位置,对于一个新的Intent请求就会实例化一次.spa


singleTop:orm

    若是在任务的栈顶正好存在该Activity 的实例,就重用该实例,而不会建立新的Activity 对象,不过它会调用onNewIntent()方法。若是栈顶部不存在就会建立新的实例并放入栈顶(即便栈中已经存在该Activity 实例,只要不在栈顶,都会建立实例)。若是启动此Activity Intent中没有设置FLAG_ACTIVITY_NEW_TASK标志则这个Activity 与启动他的Activity在同一个Task若是设置了Activity 请参考上面FLAG_ACTIVITY_NEW_TASK的详细说明, “launchMode”设置为"singleTop"Activity能够被实例化屡次,能够在Task中的任何位置,对于一个新的Intent请求若是在Task栈顶,则会用栈顶的Activity响影Intent请求,而不会从新实例化对象接收请求,若是没有在栈顶,则会实例化一个新的对象接收Intent请求.对象


singleTask:资源

    若是在栈中已经有该Activity 的实例,就重用该实例(会调用实例的onNewIntent ())。重用时,会让该实例回到栈顶,所以在它上面的实例将会被移除栈。若是栈中不存在该实例,将会建立新的实例放入栈中。和s ingleTop在名字上便可看出区别,即s ingleTop每次只检测当前栈顶的activity是不是咱们须要请求建立的,而singleTask则会检测栈中所有的Activity 对象,从上向下,若是检测到是咱们所请求的则会消灭此Activity 对象上面的对象,直接把检测到的咱们须要的Activity 置为栈顶。“launchMode”设置为" singleTask"Activity老是在栈底,只能被实例化一次,它容许其它Activity压入"singleTask"Activity 所在的Task,若是有新的Intent请求有此标志的Activity ,则系统会清除有此标志的Task栈中的所有Activity,并把此Activity显示出来.it


singleInstance:class

    在一个新栈中建立该Activity 实例,并让多个应用共享该Activity 实例。一旦这种模式的Activity实例存在于某个栈中,任何应用再激活这个Activity时都会重用该栈中的实例,其效果至关于多个应用程序共享一个应用,无论谁激活该Activity都会进入同一个应用中。此启动模式和咱们使用的浏览器工做原理相似,在多个程序中访问浏览器时,若是当前浏览器没有打开,则打开浏览器,不然会在当前打开的浏览器中访问。此模式会节省大量的系统资源,由于他能保证要请求的Activity对象在当前的栈中只存在一个。“launchMode”设置为”singleInstance”Activity老是在栈底,只能被实例化一次,不容许其它的Activity压入”singleInstance”Activity 所在Task,即整个Task栈中只能有这么一个Activity .原理

相关文章
相关标签/搜索