Activity启动模式
Activity启动模式定义了Activity被启动时的行为,即怎样启动、启动方式等。Activity启动模式可以在
4种启动模式
在Android中,Activity的启动模式有以下4种:
standard(标准模式)
singleTop(栈顶复用模式)
singleTask(栈内复用模式)
singleInstance(单实例模式)
standard模式
standard模式是Activity的默认启动模式,如果没有特别指定,系统将使用这种启动模式。每次通过Intent启动一个Activity,都会创建一个新的Activity,并且将新Activity压入任务栈中。如果多次启动同一个Activity,将会有多个Activity实例存在(taskAffinity属性除外)。
以下代码为指定standard模式的代码:
android:name=".MainActivity"
android:launchMode="standard">
singleTop模式
singleTop模式是指如果要启动的Activity的实例已经位于任务栈顶部,那么不会重新创建新的实例,而是复用栈顶的实例。如果已经存在于栈中但不在栈顶,将会创建新的实例并将它放置于栈顶。这种模式主要用来避免重复创建Activity实例,从而提高应用程序的性能。
以下代码为指定singleTop模式的代码:
android:name=".MainActivity"
android:launchMode="singleTop">
singleTask模式
singleTask模式是指如果要启动的Activity的实例已经存在于任务栈中,那么不会重新创建实例,而是复用已经存在的实例,这个实例会被放置在栈顶。如果不存在该实例,将会重新创建新的实例,并放在栈顶,但是在此之前会先回收栈顶的Activity。通过该模式启动的Activity将会位于单独的任务栈中,可以保证该任务栈中的Activity实例只有一个。在不同任务栈中的Activity实例可以同时存在。
以下代码为指定singleTask模式的代码:
android:name=".MainActivity"
android:launchMode="singleTask">
singleInstance模式
singleInstance模式是指如果Activity的实例已存在于系统中,启动该Activity不会经过onCreate()方法,系统直接复用该Activity的实例。如果不存在该实例,系统会创建一个新的任务栈,然后把该Activity的实例放入新的任务栈中,该任务栈中只有一个Activity的实例,如果在该模式下启动其他Activity,新的Activity将会在该任务栈中创建实例。
以下代码为指定singleInstance模式的代码:
android:name=".MainActivity"
android:launchMode="singleInstance">
总结
Activity启动模式是Android系统的重要组成部分,不同的启动模式适用于不同的场景,能够帮助开发者在不同的场景下更灵活地使用Activity。Android提供了4种Activity启动模式,每种模式都有各自的特点和使用场景,开发者根据具体情况选择合适的启动模式使用。