Android中Activity有哪些启动模式
Android中Activity启动模式指定了Activity在启动时的行为。Activity启动模式主要用于处理Activity在启动时与哪些任务相关,以及在该任务中如何创建Activity实例的问题。
Android中Activity启动模式分为以下五种:
1. standard
standard是默认的启动模式。每次启动Activity时都会创建一个新的实例,且该实例会被放在调用栈的顶部。如果该Activity在调用栈中已经存在,则会将该Activity调用栈中存在的实例移到栈顶。
2. singleTop
如果新启动的Activity的类型和自身一样(即都是singleTop),则不会创建新实例,而是调用栈中的实例直接接收该请求;如果新启动的Activity的类型和自身不同,则会创建新实例,放在栈顶。
3. singleTask
当该Activity在一个任务栈中被启动时,系统会先寻找是否存在该Activity的实例,若存在,则把该Activity移到栈顶并清除该Activity之上的所有Activity。如果不存在,则创建一个新的实例并放在栈顶。一个任务栈中只会存在一个该类型的Activity实例。
4. singleInstance
singleInstance是一种比较特殊的启动模式。如果一个Activity被指定为该启动模式,则它会单独占用一个任务栈,并且该栈中只会存在一个该Activity实例。如果该Activity要启动其他Activity,则会在其他任务栈中创建。
5. 辅助模式
除上述四种启动模式外,android还提供了辅助启动模式。其中,FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TOP是两种比较常用的辅助启动模式:
(1)FLAG_ACTIVITY_NEW_TASK:可以为一个未在栈中的Activity分配一个新的任务栈,并在该栈中启动该Activity。如果在当前栈中存在一个该类型的Activity实例,则该实例移动到新任务栈的顶部。
(2)FLAG_ACTIVITY_CLEAR_TOP:该标记将使调用栈中该Activity实例之上的Activity全部出栈,并且该Activity实例对应的onNewIntent()方法会被执行。这个标记通常被用来刷新Activity。
