官方介绍
地址:developer.android.google.cn/reference/k…
简单使用
步骤
1.继承Activity类,重写onCreate ,并在onCreate方法中通过setContentView方法设置布局
2.在AndroidManifest.xml 中创建Activity对应的<activity> 声明
这样一个activity就可以被使用了
生命周期
启动模式和FLAG
启动模式
1 singleTop 栈顶复用 2 standard 不复用,每次都新建 3 singleTask 栈内共用一个实例 4 singleInstance App内共用一个实例
FLAGS
1. FLAG_ACTIVITY_CLEAR_TASK
如果在传递给Context.startActivity()的 Intent 中设置,则此标志将导致与活动关联的任何现有任务在活动启动之前被清除。也就是说,该活动成为一个空任务的新根,并且所有旧活动都已完成。这只能与FLAG_ACTIVITY_NEW_TASK结合使用。
public static final int FLAG_ACTIVITY_CLEAR_TASK = 0X00008000;
2. 1. FLAG_ACTIVITY_NEW_TASK
如果设置,此活动将成为此历史堆栈上新任务的开始。任务(从启动它的活动到下一个任务活动)定义了用户可以移动到的活动的原子组。任务可以移到前台和后台;特定任务中的所有活动始终保持相同的顺序。有关任务的更多信息,请参阅任务和返回堆栈。
该标志通常由想要呈现“启动器”样式行为的活动使用:它们为用户提供可以完成的单独事情的列表,否则这些事情会完全独立于启动它们的活动运行。
使用此标志时,如果您现在正在启动的 Activity 已经在运行任务,则不会启动新的 Activity;相反,当前任务将简单地以其上次所处的状态被带到屏幕的前面。有关禁用此行为的标志,请参见FLAG_ACTIVITY_MULTIPLE_TASK 。
当调用者从正在启动的活动中请求结果时,不能使用此标志。
public static final int FLAG_ACTIVITY_NEW_TASK = 0x10000000;
3. FLAG_ACTIVITY_CLEAR_TOP
如果设置,并且正在启动的活动已经在当前任务中运行,那么不会启动该活动的新实例,而是关闭它上面的所有其他活动,并且此 Intent 将被传递到(现在顶部)作为新意图的旧活动。
例如,考虑一个由以下活动组成的任务:A、B、C、D。如果 D 调用 startActivity() 并带有一个解析为活动 B 的组件的 Intent,那么 C 和 D 将完成并且 B 接收给定的 Intent ,导致堆栈现在是:A,B。
上面示例中当前运行的活动 B 实例将在其 onNewIntent() 方法中接收您在此处启动的新意图,或者自身完成并使用新意图重新启动。如果它已声明其启动模式为“多重”(默认)并且您没有在同一意图中设置FLAG_ACTIVITY_SINGLE_TOP ,那么它将完成并重新创建;对于所有其他启动模式,或者如果设置了FLAG_ACTIVITY_SINGLE_TOP ,则此 Intent 将被传递到当前实例的 onNewIntent()。
这种启动模式也可以与FLAG_ACTIVITY_NEW_TASK一起使用,效果很好:如果用于启动任务的根活动,它将将该任务的任何当前正在运行的实例带到前台,然后将其清除为根状态。这尤其有用,例如,当从通知管理器启动活动时。
有关任务的更多信息,请参阅任务和返回堆栈。
public static final int FLAG_ACTIVITY_CLEAR_TOP = 0x04000000;
4. FLAG_ACTIVITY_BROUGHT_TO_FRONT
这个标志一般不是由程序代码设置的,如在launchMode中设置singleTask模式时系统帮你设定
5. FLAG_ACTIVITY_NO_HISTORY
使用这个标记位,无论是否主动进行finish,将都会导致Activity不保存到任务栈中
例如 A->B->C ,A中启动B的时候设置了此标记位,那么栈任务将会如下A->C
6. FLAG_ACTIVITY_FORWARD_RESULT
连续跳转多层Activity后,传值给原始Activity
例如:A->B->C->D->E ,(B,C,D,都进行主动finish)此时在E中setResult给A,只需要在启动E时使用此标记位
7. FLAG_ACTIVITY_NO_ANIMATION
使用此标记位表示跳转到目标Activity的时候不使用动画