大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Android技巧 > Android技术7:Activity的启动模式

Android技术7:Activity的启动模式

关键词:启动模式AndroidActivity  阅读(638) 赞(17)

[摘要]本文是对Android Activity的启动模式的讲解,对学习Android编程技术有所帮助,与大家分享。

1.Activity启动模式

在Android系统中,Activity的四种启动模式

  • standard(默认)
  • singleTop
  • singleTask
  • singleInstance

该四种启动模式在AndroidManifest.xml中配置每一activity中参数设置android:launchMode

2.模式特征

standard:该模式下,每次通过通过Intent启动时,都会生成一个新的实例。android:launchMode 没有配置下,默认为standard。

singleTop:该模式与standard类似,区别是如果当前Activity位于栈顶时,intent启动该Activity时则不会生成新的实例,重用原来实例。但是如果该Activity当前不位于栈顶的话,就重新生成一个新的实例。如果显示地指定intent的参数FLAG_ACTIVITY_NEW_TASK,会启动到别的任务重去。

singleTask:该模式下,Activity只会有一个实例。如果某一个任务中已经有该Activity的一个实例存在,则不再启动新的,每次都会被重新使用,重用就是如果该Activity在Task的栈底,会被调到栈顶。

singleInstance:该模式和singleTask一样,唯一区别是,该模式下,Activity会独立拥有一个task,不会和其他Activity公用,每次Activity都被重用,且全局只能有一个实例。

3.Activity在栈中的情况分析

3.1standard:

Activity A启动模式为standard,即默认值,每次调用startActivity,会重新生成一个新的Activity A的实例,且生成的实例位于栈顶。

3.2singleTop

该模式下,与standard类似,但唯一区别是,当Activity B位于栈顶时,启动startActivity B 不会重新生成一个新实例,而是重用栈顶实例。如果不位于栈顶,则与standard一样。

3.3singleTask

假设Activity A启动模式为singleTask ,一个任务中只存在一个Activity A,但它不位于栈顶时,则将它上面的所有Activity 出栈,使Activity A处于栈顶。

4.singleInstance

如果Activity A启动模式为singleInstance ,启动Activity A时,则在新的Task中启动一个Activity A ,即一个新栈,它是全局量。出栈顺序,如果当前位于A,则出栈顺序为A-C-B

,如果启动A后又回到C,则出栈顺序为C-B-A



相关评论