- Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT
/**
* 本flag只在分屏多窗口模式下使用。
* 新Activity会显示在旧Activity旁边。
* 本flag只能跟FLAG_ACTIVITY_NEW_TASK联合使用。并且如果你想创建一个已存在活动的新实例,那么要设置FLAG_ACTIVITY_MULTIPLE_TASK。
*/
public static final int FLAG_ACTIVITY_LAUNCH_ADJACENT = 0x00001000;
- Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS
/**
* 默认情况下由FLAG_ACTIVITY_NEW_DOCUMENT创建的新纪录,用户关闭时(按返回键或其他方式结束)它在最近任务中的入口会被移除。
* 如果你想保留入口,就用本flag。
* 接收的活动可以用android.R.attr#autoRemoveFromRecents属性或者调用Activity.finishAndRemoveTask()来覆盖本请求。
*/
public static final int FLAG_ACTIVITY_RETAIN_IN_RECENTS = 0x00002000;
- Intent.FLAG_ACTIVITY_TASK_ON_HOME
/**
* 本flag会将新的启动任务放在当前主活动任务(如果有的话)的顶端
* 也就是说,在任务中按返回键总是会回到主页,即使上一个用户看到的Activity不是主页
* 只能与FLAG_ACTIVITY_NEW_TASK联合使用。
*/
public static final int FLAG_ACTIVITY_TASK_ON_HOME = 0X00004000;
- Intent.FLAG_ACTIVITY_CLEAR_TASK
/**
* 本flag在新Activity启动前,与新Activity关联的任务栈被清空,并成为该任务栈的根。
* 本flag只能与FLAG_ACTIVITY_NEW_TASK联合使用
*/
public static final int FLAG_ACTIVITY_CLEAR_TASK = 0X00008000;
- Intent.FLAG_ACTIVITY_NO_ANIMATION
/**
* 该flag会阻止系统展示Activity的当前状态到另一个状态之间的转场动画。
* 这并不意味着永远没有动画
* 若另一项Activity的改变在当前展示的Activity启动前发生并且没有使用本flag,那么动画还会展示。
* 当你要进行一系列Activity操作,但是用户看到的动画不应该由第一项改变来驱动,而是由下一项。
*/
public static final int FLAG_ACTIVITY_NO_ANIMATION = 0X00010000;
- Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
/**
* 如果新Activity已在任务栈中,用本flag启动会将它移动到任务栈的历史栈的前面。
* 例:任务栈A、B、C、D,若D.startActivity(B),则栈顺序变为A、C、D、B
* 若用了FLAG_ACTIVITY_CLEAR_TOP,本flag就无效
*/
public static final int FLAG_ACTIVITY_REORDER_TO_FRONT = 0X00020000;
- Intent.FLAG_ACTIVITY_NO_USER_ACTION
/**
* 该flag会阻止当前Activity的onUserLeaveHint回调,在它被新启动的Activity造成paused状态时
* 通常,一个Activity在用户操作从前台移走的时候会调用上面的回调。
* 该回调标志着Activity生命周期中的一个点,在该点Activity会隐藏它想要显示的”直到用户看到“的东西,例:闪烁的LED灯
* 若Activity由非用户操作事件启动(来电或闹钟),则需在startActivity中添加该flag,以确保暂停时Activity不会认为用户已确认通知
*/
public static final int FLAG_ACTIVITY_NO_USER_ACTION = 0x00040000;
- Intent.FLAG_ACTIVITY_NEW_DOCUMENT
/**
* FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET被FLAG_ACTIVITY_NEW_DOCUMENT替代(api21)
* 本flag会给启动的Activity开一个新的任务记录。
* 使用了本flag或documentLaunchMode属性时,相同Activity的多实例会在最近任务列表中产生不同的记录。
* 使用本flag比使用documentLaunchMode属性更好,因为documentLaunchMode属性会跟活动绑定,而flag只在需要时添加。
* 注意本flag的默认词义,Activity销毁后最近任务列表中的入口不会移除。这跟使用FLAG_ACTIVITY_NEW_TASK不一样,后者活动销毁后入口会马上移除。你可以用FLAG_ACTIVITY_RETAIN_IN_RECENTS改变这个行为。
* 本flag可以跟FLAG_ACTIVITY_MULTIPLE_TASK联合使用。
* 单独使用时跟manifest活动中定义documentLaunchMode="intoExisting"效果相同
* 联合使用时跟manifest活动中定义documentLaunchMode="always"效果相同。
*/
public static final int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET = 0x00080000;
public static final int FLAG_ACTIVITY_NEW_DOCUMENT = FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
- Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
/**
* 该flag一般不由应用代码设置,活动从历史栈中启动(长按home键)时由系统设置。
*/
public static final int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY = 0x00100000;
- Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
/**
* 新Activity在新任务中启动或者被放到一个已存在任务的顶端时,会被当做任务的前门来启动。
* 这会导致任何相关性的Activity在适当状态下需要拥有这个任务(无论移动Activity到它里面或者是移走)
* 或者在需要时简单地重置任务到初始状态。
*/
public static final int FLAG_ACTIVITY_RESET_TASK_IF_NEEDED = 0x00200000;
- Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
/**
* 设置该flag,新Activity不会保留在最近启动的活动列表中
*/
public static final int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS = 0x00800000;
- Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP
/**
* 如果设置了此flag,并且此intent用于从现有Activity启动新Activity,则当前Activity将不会被视为顶部Activity
* 以决定是否应将新intent交付给顶部,而不是启动新Activity。上一个Activity将被用作顶部,假设当前Activity将立即销毁
* 百度翻的,不是很懂这个flag???
*/
public static final int FLAG_ACTIVITY_PREVIOUS_IS_TOP = 0x01000000;
- Intent.FLAG_ACTIVITY_FORWARD_RESULT
/**
* (BActivity由AActivity启动)BActivity调用setResult的数据会传送给AActivity
*/
public static final int FLAG_ACTIVITY_FORWARD_RESULT = 0x02000000;
- Intent.FLAG_ACTIVITY_CLEAR_TOP
/**
* 新Activity已在当前任务栈中时,其上面的Activity会被关闭,新Activity不会重新启动,只回调onNewIntent()
* 新Activity已在任务栈顶时
* 若启动模式是"multiple" (默认的),且未添加FLAG_ACTIVITY_SINGLE_TOP,则Activity会被销毁重新创建
* 若启动模式是其他的,或者添加了FLAG_ACTIVITY_SINGLE_TOP,那么只会调用onNewIntent()
* 跟FLAG_ACTIVITY_NEW_TASK联合使用效果很好
* 若用于启动任务栈中的根Activity,会把该Activity移到前面并清空至root状态。
* 这特别有用,例:用于从notification manager中启动Activity。
*/
public static final int FLAG_ACTIVITY_CLEAR_TOP = 0x04000000;
- Intent.FLAG_ACTIVITY_MULTIPLE_TASK
/**
* 用于创建一个新任务栈,并启动一个Activity放进去
* 与FLAG_ACTIVITY_NEW_DOCUMENT或者FLAG_ACTIVITY_NEW_TASK一起使用
* 单独用FLAG_ACTIVITY_NEW_DOCUMENT或者FLAG_ACTIVITY_NEW_TASK时,会在已存在的任务中寻找匹配的Intent,找不到才会创建一个新任务
* 使用了本flag不会寻找匹配的Intent,无条件创建一个新任务。
* **用了FLAG_ACTIVITY_NEW_TASK就不要用本flag,除非你启动的是应用的launcher。**
* 跟FLAG_ACTIVITY_NEW_TASK联合使用能防止把已存在的任务移到前面,会为新活动创建一个新任务,无论已存在的任务中有没有新活动。
* 因为默认安卓系统中没有提供可视化的任务管理,所以你不应该使用本flag,除非给用户提供可以回到其他任务的方法。
* 单独用本flag而不用FLAG_ACTIVITY_NEW_DOCUMENT或者FLAG_ACTIVITY_NEW_TASK是无效的。
*/
public static final int FLAG_ACTIVITY_MULTIPLE_TASK = 0x08000000;
- Intent.FLAG_ACTIVITY_NEW_TASK
/**
* 新Activity会成为历史栈中的新任务(一组活动)的开始。
* 通常用于具有"launcher"行为的活动:让用户完成一系列事情,完全独立于之前的活动。
* 若新Activity已存在于一个为它运行的任务中,那么不会启动,只会把该任务移到屏幕最前。
* 若新Activity要返回result给启动自己的Activity,就不能用这个flag。
*/
public static final int FLAG_ACTIVITY_NEW_TASK = 0x10000000;
- Intent.FLAG_ACTIVITY_SINGLE_TOP
/**
* 新Activity在栈顶时不会重新启动
*/
public static final int FLAG_ACTIVITY_SINGLE_TOP = 0x20000000;
- Intent.FLAG_ACTIVITY_NO_HISTORY
/**
* 新Activity不会保留在历史栈中,一旦用户切换到其他页面,新Activity会马上销毁。
* 旧Activity的onActivityResult()永远不会被触发。
*/
public static final int FLAG_ACTIVITY_NO_HISTORY = 0x40000000;