«

android Intent Flags详解

时间:2024-3-2 19:00     作者:韩俊     分类: Android


  1. FLAG_GRANT_READ_URI_PERMISSION
 /**
     * If set, the recipient of this Intent will be granted permission to
     * perform read operations on the URI in the Intent's data and any URIs
     * specified in its ClipData.  When applying to an Intent's ClipData,
     * all URIs as well as recursive traversals through data or other ClipData
     * in Intent items will be granted; only the grant flags of the top-level
     * Intent are used.
     */
     临时访问读权限  intent的接受者将被授予 INTENT 数据uri 或者 在ClipData 上的读权限。
  1. FLAG_GRANT_WRITE_URI_PERMISSION
  /**
     * If set, the recipient of this Intent will be granted permission to
     * perform write operations on the URI in the Intent's data and any URIs
     * specified in its ClipData.  When applying to an Intent's ClipData,
     * all URIs as well as recursive traversals through data or other ClipData
     * in Intent items will be granted; only the grant flags of the top-level
     * Intent are used.
     */  临时访问写权限 intent的接受者将被授予 INTENT 数据uri 或者 在ClipData 上的写权限。

3.FLAG_FROM_BACKGROUND

 /**
     * Can be set by the caller to indicate that this Intent is coming from
     * a background operation, not from direct user interaction.
     */  指明Intent来自后台操作 ,不是来自用户直接互动。

4.FLAG_DEBUG_LOG_RESOLUTION

/**
     * A flag you can enable for debugging: when set, log messages will be
     * printed during the resolution of this intent to show you what has
     * been found to create the final resolved list.
     */解析intent时打印log messages,展示创建最终的resolved list 找到的信息 。
     比如有如下代码  :
       Intent intent = new Intent("android.provider.Telephony.SMS_RECEIVED");
      intent.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION);
        sendBroadcast(intent);
        将会按照优先级打印出系统所有注册"android.provider.Telephony.SMS_RECEIVED"的广播接收者。

5.FLAG_EXCLUDE_STOPPED_PACKAGES

 /**
     * If set, this intent will not match any components in packages that
     * are currently stopped.  If this is not set, then the default behavior
     * is to include such applications in the result.
     */如果设置 intent 将不会匹配处于stoped状态的组件,如果没设置,默认匹配 。

6.FLAG_INCLUDE_STOPPED_PACKAGES

 /**
     * If set, this intent will always match any components in packages that
     * are currently stopped.  This is the default behavior when
     * {@link #FLAG_EXCLUDE_STOPPED_PACKAGES} is not set.  If both of these
     * flags are set, this one wins (it allows overriding of exclude for
     * places where the framework may automatically set the exclude flag).
     */  如果设置,intent将匹配packages 内stopped状态的组件,也是intent的默认设置, 如果 exclude 跟 include 同时设置 ,include win!
  1. FLAG_GRANT_PERSISTABLE_URI_PERMISSION
    /**
     * When combined with FLAG_GRANT_READ_URI_PERMISSION and/or
     * FLAG_GRANT_WRITE_URI_PERMISSION, the URI permission grant can be
     * persisted across device reboots until explicitly revoked with
     * {@link Context#revokeUriPermission(Uri, int)}. This flag only offers the
     * grant for possible persisting; the receiving application must call
     * {@link ContentResolver#takePersistableUriPermission(Uri, int)} to
     * actually persist.
     *
     * @see ContentResolver#takePersistableUriPermission(Uri, int)
     * @see ContentResolver#releasePersistableUriPermission(Uri, int)
     * @see ContentResolver#getPersistedUriPermissions()
     * @see ContentResolver#getOutgoingPersistedUriPermissions()
     */
     区别于 FLAG_GRANT_READ_URI_PERMISSION 跟 FLAG_GRANT_WRITE_URI_PERMISSION, URI权限会持久存在即使重启,直到明确的用 revokeUriPermission(Uri, int) 撤销。 这个flag只提供可能持久授权。但是接收的应用必须调用ContentResolver的takePersistableUriPermission(Uri, int)方法实现 。

8.FLAG_GRANT_PREFIX_URI_PERMISSION

When combined with FLAG_GRANT_READ_URI_PERMISSION and/or FLAG_GRANT_WRITE_URI_PERMISSION, the URI permission grant applies to any URI that is a prefix match against the original granted URI. (Without this flag, the URI must match exactly for access to be granted.) Another URI is considered a prefix match only when scheme, authority, and all path segments defined by the prefix are an exact match.
Uri 权限授予任何原始授权URI前缀匹配的URI。

9.FLAG_ACTIVITY_NO_HISTORY

 /**
     * If set, the new activity is not kept in the history stack.  As soon as
     * the user navigates away from it, the activity is finished.  This may also
     * be set with the {@link android.R.styleable#AndroidManifestActivity_noHistory
     * noHistory} attribute.
     *
     * <p>If set, {@link android.app.Activity#onActivityResult onActivityResult()}
     * is never invoked when the current activity starts a new activity which
     * sets a result and finishes.
     * 如果设置,新的activity将不会保存在历史栈中。一旦
     * 用户离开这个activity,它就会被finish掉。  
     * 也可以在manifest.xml中设置activity android:hoHistory属性设置。
     *如果设置, OnActivityResult()方法将不会再被调用 。
     * 
     */
  1. FLAG_ACTIVITY_SINGLE_TOP
/**
     * If set, the activity will not be launched if it is already running
     * at the top of the history stack.
     * 如果设置了,如过Activity在栈顶将不会启动。
     */

11.FLAG_ACTIVITY_NEW_TASK

 /**
     * If set, this activity will become the start of a new task on this
     * history stack.  A task (from the activity that started it to the
     * next task activity) defines an atomic group of activities that the
     * user can move to.  Tasks can be moved to the foreground and background;
     * all of the activities inside of a particular task always remain in
     * the same order.  See
     * <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back
     * Stack</a> for more information about tasks.
     *
     * <p>This flag is generally used by activities that want
     * to present a "launcher" style behavior: they give the user a list of
     * separate things that can be done, which otherwise run completely
     * independently of the activity launching them.
     *
     * <p>When using this flag, if a task is already running for the activity
     * you are now starting, then a new activity will not be started; instead,
     * the current task will simply be brought to the front of the screen with
     * the state it was last in.  See {@link #FLAG_ACTIVITY_MULTIPLE_TASK} for a flag
     * to disable this behavior.
     *
     * <p>This flag can not be used when the caller is requesting a result from
     * the activity being launched.
     * 如果设置了,这个Activity将会成为新任务历史栈的开始
     * 如果已经有一个task运行着邀请东的activity,将不会启动新的activity;当前任务栈最后状态
     * 将会被展示在屏幕上 查看 FLAG_ACTIVITY_MULTIPLE_TASK ,关闭这一特性。
     */

12.FLAG_ACTIVITY_MULTIPLE_TASK

 /**
     * This flag is used to create a new task and launch an activity into it.
     * This flag is always paired with either {@link #FLAG_ACTIVITY_NEW_DOCUMENT}
     * or {@link #FLAG_ACTIVITY_NEW_TASK}. In both cases these flags alone would
     * search through existing tasks for ones matching this Intent. Only if no such
     * task is found would a new task be created. When paired with
     * FLAG_ACTIVITY_MULTIPLE_TASK both of these behaviors are modified to skip
     * the search for a matching task and unconditionally start a new task.
     * 用来创建新的任务栈,启动activity。
     * 总是跟 FLAG_ACTIVITY_NEW_DOCUMENT或FLAG_ACTIVITY_NEW_TASK一起用。
     * 如果单独使用这两个,将从存在的任务栈中找寻匹配这个intent的。如果找不到,
     * 将会重新创建task。当匹配的时候,都是为了更改然后跳过找到匹配task的步骤,然后无条件的启动新的
     * task
     * <strong>When used with {@link #FLAG_ACTIVITY_NEW_TASK} do not use this
     * flag unless you are implementing your own
     * top-level application launcher.</strong>  
     * 不要轻易跟FLAG_ACTIVITY_NEW_TASK结合使用,除非你在实现自己的top-level application 
     * launcher
     * Used in conjunction with
     * {@link #FLAG_ACTIVITY_NEW_TASK} to disable the
     * behavior of bringing an existing task to the foreground.  When set,
     * a new task is <em>always</em> started to host the Activity for the
     * Intent, regardless of whether there is already an existing task running
     * the same thing.
     * <p><strong>Because the default system does not include graphical task management,
     * you should not use this flag unless you provide some way for a user to
     * return back to the tasks you have launched.</strong>
     * See {@link #FLAG_ACTIVITY_NEW_DOCUMENT} for details of this flag's use for
     * creating new document tasks.
     * <p>This flag is ignored if one of {@link #FLAG_ACTIVITY_NEW_TASK} or
     * {@link #FLAG_ACTIVITY_NEW_DOCUMENT} is not also set.
     * 只设置这个flag而不与其他匹配将被忽略掉。
     */

13.FLAG_ACTIVITY_CLEAR_TOP

 /**
     * If set, and the activity being launched is already running in the
     * current task, then instead of launching a new instance of that activity,
     * all of the other activities on top of it will be closed and this Intent
     * will be delivered to the (now on top) old activity as a new Intent.
     * 当设置此标致,并且acitivity已经启动,那么不是启动一个activity新势力,所有其他顶部的activity
     * 都会关闭,这个intent将被交付到(现在顶部)老的activity 做为新的intent。
     * <p>For example, consider a task consisting of the activities: A, B, C, D.
     * If D calls startActivity() with an Intent that resolves to the component
     * of activity B, then C and D will be finished and B receive the given
     * Intent, resulting in the stack now being: A, B.
     * 如果一个task由A,B,C,D组成,如果D调用startActivity(),跳到B, 然后C,D被finish掉,B
     * 接收新的intent  ,结果栈中:A,B.
     * <p>The currently running instance of activity B in the above example will
     * either receive the new intent you are starting here in its
     * onNewIntent() method, or be itself finished and restarted with the
     * new intent.  If it has declared its launch mode to be "multiple" (the
     * default) and you have not set {@link #FLAG_ACTIVITY_SINGLE_TOP} in
     * the same intent, then it will be finished and re-created; for all other
     * launch modes or if {@link #FLAG_ACTIVITY_SINGLE_TOP} is set then this
     * Intent will be delivered to the current instance's onNewIntent().
     * 现在运行的B的实例或者在onNewIntent方法中接收你start的新intent,或者自己finish掉然后重启
     * 一个新的intent。如果声明启动了启动模式是“multiple”(默认),并且你没有在这个intent中设置
     * FLAG_ACTIVITY_SINGLE_TOP,就会finish掉然后重新创建。
     * 其他的启动模式。或者FLAG_ACTIVITY_SINGLE_TOP被设置了,intent将会传送到当前实例的 
     * onNewIntent方法中。
     *
     * <p>This launch mode can also be used to good effect in conjunction with
     * {@link #FLAG_ACTIVITY_NEW_TASK}: if used to start the root activity
     * of a task, it will bring any currently running instance of that task
     * to the foreground, and then clear it to its root state.  This is
     * especially useful, for example, when launching an activity from the
     * notification manager.
     * 这个启动模式也可以跟FLAG_ACTIVITY_NEW_TASK结合使用:如果用来start 根activity,它将会
     * 此task任意当前正在执行的实例bring to foreground,然后清除到跟状态。这非常有用,比如,
     * 当从notification manager启动一个activity。
     */

14.FLAG_ACTIVITY_FORWARD_RESULT

 /**
     * If set and this intent is being used to launch a new activity from an
     * existing one, then the reply target of the existing activity will be
     * transfered to the new activity.  This way the new activity can call
     * {@link android.app.Activity#setResult} and have that result sent back to
     * the reply target of the original activity.
     * 如果设置,并且这个Intent用于从一个存在的Activity启动一个新的Activity,那么,这个作为答复目标
     * 的Activity将会传到这个新的Activity中。这种方式下,新的Activity可以调用setResult(int),
     * 并且这个结果值将发送给那个作为答复目标的Activity。
     */

15.FLAG_ACTIVITY_PREVIOUS_IS_TOP

 /**
     * If set and this intent is being used to launch a new activity from an
     * existing one, the current activity will not be counted as the top
     * activity for deciding whether the new intent should be delivered to
     * the top instead of starting a new one.  The previous activity will
     * be used as the top, with the assumption being that the current activity
     * will finish itself immediately.
     * 如果给Intent对象设置了这个标记,并且这个Intent对象被用于从一个既存的Activity中启动一个新的
     * Activity,这个Activity不被看作决定是否传送新的intent到top而不是start新的,
     * 通常认为使用这个flag启动的Activity会被自己立即终止。
     */

16.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS

/**
     * If set, the new activity is not kept in the list of recently launched
     * activities.
     * 如果设置,新的Activity不会在最近启动的Activity的列表中保存。
     */

17.FLAG_ACTIVITY_BROUGHT_TO_FRONT

 /**
     * This flag is not normally set by application code, but set for you by
     * the system as described in the
     * {@link android.R.styleable#AndroidManifestActivity_launchMode
     * launchMode} documentation for the singleTask mode.
     * 通常不是通过应用程序代码设置,而是通过系统如launchMode singleTask模式。
     */

18.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

 /**
     * If set, and this activity is either being started in a new task or
     * bringing to the top an existing task, then it will be launched as
     * the front door of the task.  This will result in the application of
     * any affinities needed to have that task in the proper state (either
     * moving activities to or from it), or simply resetting that task to
     * its initial state if needed.
     * FLAG_ACTIVITY_RESET_TASK_IF_NEEDED:如果设置该属性,并且
     * 这个activity在一个新的task中正在被启动或者被带到一个已经存在
     * 的task的顶部,这时这个activity将会被作为这个task的首个页面加
     * 载。这将会导致拥有这个应用的affinities的task处于一个合适的状
     * 态(移动activity到这个task或者activity从中移出),或者简单的
     * 重置这个task到它的初始状态
     */

19.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY

/**
* This flag is not normally set by application code, but set for you by
* the system if this activity is being launched from history
* (longpress home key).
* 这个标记通常不由应用程序代码来设置,如果是从历史中启动这个Activity,系统就会设置这个标记。
* (长按home键)
*/


20.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

/**
* @deprecated As of API 21 this performs identically to
* {@link #FLAG_ACTIVITY_NEW_DOCUMENT} which should be used instead of this.
* api21过期,被FLAG_ACTIVITY_NEW_DOCUMENT代替。
*/

21.FLAG_ACTIVITY_NEW_DOCUMENT

 /**
     * This flag is used to open a document into a new task rooted at the activity launched
     * by this Intent. Through the use of this flag, or its equivalent attribute,
     * {@link android.R.attr#documentLaunchMode} multiple instances of the same activity
     * containing different documents will appear in the recent tasks list.
     *
     * <p>The use of the activity attribute form of this,
     * {@link android.R.attr#documentLaunchMode}, is
     * preferred over the Intent flag described here. The attribute form allows the
     * Activity to specify multiple document behavior for all launchers of the Activity
     * whereas using this flag requires each Intent that launches the Activity to specify it.
     *
     * <p>Note that the default semantics of this flag w.r.t. whether the recents entry for
     * it is kept after the activity is finished is different than the use of
     * {@link #FLAG_ACTIVITY_NEW_TASK} and {@link android.R.attr#documentLaunchMode} -- if
     * this flag is being used to create a new recents entry, then by default that entry
     * will be removed once the activity is finished.  You can modify this behavior with
     * {@link #FLAG_ACTIVITY_RETAIN_IN_RECENTS}.
     *
     * <p>FLAG_ACTIVITY_NEW_DOCUMENT may be used in conjunction with {@link
     * #FLAG_ACTIVITY_MULTIPLE_TASK}. When used alone it is the
     * equivalent of the Activity manifest specifying {@link
     * android.R.attr#documentLaunchMode}="intoExisting". When used with
     * FLAG_ACTIVITY_MULTIPLE_TASK it is the equivalent of the Activity manifest specifying
     * {@link android.R.attr#documentLaunchMode}="always".
     *
     * Refer to {@link android.R.attr#documentLaunchMode} for more information.
     *
     * @see android.R.attr#documentLaunchMode
     * @see #FLAG_ACTIVITY_MULTIPLE_TASK
     * 可以跟FLAG_ACTIVITY_MULTIPLE_TASK结合使用,当只用自己的时候相当于Manifast中
     * android.R.attr.documentLaunchMode="intoExisting",当跟FLAG_ACTIVITY_MULTIPLE_TASK
     * 结合使用相当于 Manifast中android.R.attr.documentLaunchMode="always". 
     */

22.FLAG_ACTIVITY_NO_USER_ACTION

 /**
     * If set, this flag will prevent the normal {@link android.app.Activity#onUserLeaveHint}
     * callback from occurring on the current frontmost activity before it is
     * paused as the newly-started activity is brought to the front.
     *
     * <p>Typically, an activity can rely on that callback to indicate that an
     * explicit user action has caused their activity to be moved out of the
     * foreground. The callback marks an appropriate point in the activity's
     * lifecycle for it to dismiss any notifications that it intends to display
     * "until the user has seen them," such as a blinking LED.
     *
     * <p>If an activity is ever started via any non-user-driven events such as
     * phone-call receipt or an alarm handler, this flag should be passed to {@link
     * Context#startActivity Context.startActivity}, ensuring that the pausing
     * activity does not think the user has acknowledged its notification.
     * onUserLeaveHint()作为activity周期的一部分,它在activity因为用户要跳转到别的activity而要退
     * 到background时使用。比如,在用户按下Home键,它将被调用。比如有电话进来(不属于用户的选择),它
     * 就不会被调用。
     * 如果设置,作为新启动的Activity进入前台时,这个标志将在Activity暂停之前阻止从最前方的Activity
     * 回调的onUserLeaveHint()。典型的,一个Activity可以依赖这个回调指明显式的用户动作引起的
     * Activity移出后台。这个回调在Activity的生命周期中标记一个合适的点,并关闭一些Notification。 
     *      如果一个Activity通过非用户驱动的事件,如来电或闹钟,启动的,这个标志也应该传递给
     * Context.startActivity,保证暂停的Activity不认为用户已经知晓其Notification。
     */

23.FLAG_ACTIVITY_REORDER_TO_FRONT

 /**
     * If set in an Intent passed to {@link Context#startActivity Context.startActivity()},
     * this flag will cause the launched activity to be brought to the front of its
     * task's history stack if it is already running.
     * 如果在intent里设置交给 startActivity(),这个flag会把已经运行过的acivity带到task历史
     * 栈的顶端。
     *
     * <p>For example, consider a task consisting of four activities: A, B, C, D.
     * If D calls startActivity() with an Intent that resolves to the component
     * of activity B, then B will be brought to the front of the history stack,
     * with this resulting order:  A, C, D, B.
     * 例如,一个task由A,B,C,D四个activity组成,如果D哦赢携带这个flag的intent调用
     * startActivity()打开B,那么B就会被带到历史栈的前部,结果是:A,C,D,B.
     *
     * This flag will be ignored if {@link #FLAG_ACTIVITY_CLEAR_TOP} is also
     * specified.
     * 如果LAG_ACTIVITY_CLEAR_TOP 被设置,那么FLAG_ACTIVITY_REORDER_TO_FRONT
     * 将被忽略。
     */

24.FLAG_ACTIVITY_NO_ANIMATION

   /**
     * If set in an Intent passed to {@link Context#startActivity Context.startActivity()},
     * this flag will prevent the system from applying an activity transition
     * animation to go to the next activity state.  This doesn't mean an
     * animation will never run -- if another activity change happens that doesn't
     * specify this flag before the activity started here is displayed, then
     * that transition will be used.  This flag can be put to good use
     * when you are going to do a series of activity operations but the
     * animation seen by the user shouldn't be driven by the first activity
     * change but rather a later one.
     * 如果设置,将阻止系统get next activity的过渡动画。并不意味着一直不会有动画,--如果另一个
     * activity 的变化发生没有在start activity 显示之前指定,会有过渡动画。
     */

25.FLAG_ACTIVITY_CLEAR_TASK

/**
     * If set in an Intent passed to {@link Context#startActivity Context.startActivity()},
     * this flag will cause any existing task that would be associated with the
     * activity to be cleared before the activity is started.  That is, the activity
     * becomes the new root of an otherwise empty task, and any old activities
     * are finished.  This can only be used in conjunction with {@link #FLAG_ACTIVITY_NEW_TASK}.
     * 如果在通过Context.startActivity()启动activity时为Intent设置了此标识,这个标识将导致:
     * 在此activity启动之前,任何与此activity相关联的task都会被清除。也就是说,
     * 此activity将变成一个空栈中新的最底端的activity,所有的旧activity都会被finish掉,
     * 这个标识仅仅和FLAG_ACTIVITY_NEW_TASK联合起来才能使用。
     */

26.FLAG_ACTIVITY_TASK_ON_HOME

 /**
     * If set in an Intent passed to {@link Context#startActivity Context.startActivity()},
     * this flag will cause a newly launching task to be placed on top of the current
     * home activity task (if there is one).  That is, pressing back from the task
     * will always return the user to home even if that was not the last activity they
     * saw.   This can only be used in conjunction with {@link #FLAG_ACTIVITY_NEW_TASK}.
     * 把当前新启动的任务置于Home任务之上,也就是按back键从这个任务返回的时候会回到home,
     * 即使这个不是他们最后看见的activity,注意这个标记必须和FLAG_ACTIVITY_NEW_TASK一起使用
     */

27.FLAG_ACTIVITY_RETAIN_IN_RECENTS

 /**
     * By default a document created by {@link #FLAG_ACTIVITY_NEW_DOCUMENT} will
     * have its entry in recent tasks removed when the user closes it (with back
     * or however else it may finish()). If you would like to instead allow the
     * document to be kept in recents so that it can be re-launched, you can use
     * this flag. When set and the task's activity is finished, the recents
     * entry will remain in the interface for the user to re-launch it, like a
     * recents entry for a top-level application.
     * 默认情况FLAG_ACTIVITY_NEW_DOCUMENT创建的document当用户关闭时之前tasks的entry会被remove
     * 掉,如果想保持在历史中一遍重新launch,就要用到这个flag.当使task的activity finish掉以后,
     * 历史entry将保持在界面以便用户重新打开类似顶级应用程序的历史。
     * <p>
     * The receiving activity can override this request with
     * {@link android.R.attr#autoRemoveFromRecents} or by explcitly calling
     * {@link android.app.Activity#finishAndRemoveTask()
     * Activity.finishAndRemoveTask()}.
     * 
     */

28.FLAG_RECEIVER_REGISTERED_ONLY

/**
     * If set, when sending a broadcast only registered receivers will be
     * called -- no BroadcastReceiver components will be launched.
     * 设置这个flag,发送广播只有动态注册才能调用,组件(xml 中定义action)不会被被launch.
     */

29.FLAG_RECEIVER_REPLACE_PENDING

 /**
     * If set, when sending a broadcast the new broadcast will replace
     * any existing pending broadcast that matches it.  Matching is defined
     * by {@link Intent#filterEquals(Intent) Intent.filterEquals} returning
     * true for the intents of the two broadcasts.  When a match is found,
     * the new broadcast (and receivers associated with it) will replace the
     * existing one in the pending broadcast list, remaining at the same
     * position in the list.
     * 这个flag 将会将之前的Intent 替代掉。加了这个flag,在发送一系列的这样的Intent 之后,
     *  中间有些Intent 有可能在你还没有来得及处理的时候,就被替代掉了。
     *
     * <p>This flag is most typically used with sticky broadcasts, which
     * only care about delivering the most recent values of the broadcast
     * to their receivers.
     */

30.FLAG_RECEIVER_FOREGROUND

 /**
     * If set, when sending a broadcast the recipient is allowed to run at
     * foreground priority, with a shorter timeout interval.  During normal
     * broadcasts the receivers are not automatically hoisted out of the
     * background priority class.
     * 当发送广播时,允许其接受者 在前台运行的拥有更高的优先级,更短的超时间隔。
     */

31.FLAG_RECEIVER_NO_ABORT

 /**
     * If this is an ordered broadcast, don't allow receivers to abort the broadcast.
     * They can still propagate results through to later receivers, but they can not 
     * prevent later receivers from seeing the broadcast.
     * 如果是有序广播,不要允许接收者中断广播播。
     * 
     */

32.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT

 /**
     * If set, when sending a broadcast <i>before boot has completed</i> only
     * registered receivers will be called -- no BroadcastReceiver components
     * will be launched.  Sticky intent state will be recorded properly even
     * if no receivers wind up being called.  If {@link #FLAG_RECEIVER_REGISTERED_ONLY}
     * is specified in the broadcast intent, this flag is unnecessary.
     * 在boot完成前发送广播,只有注册了的接收者才会被调用,xml中的无法launch.
     *
     * <p>This flag is only for use by system sevices as a convenience to
     * avoid having to implement a more complex mechanism around detection
     * of boot completion.
     *
     * @hide
     */

33.FLAG_RECEIVER_BOOT_UPGRADE

/**
     * Set when this broadcast is for a boot upgrade, a special mode that
     * allows the broadcast to be sent before the system is ready and launches
     * the app process with no providers running in it.
     * 系统更新广播,一个允许播放在系统准备好和launch app 进程之前发送的模式
     * @hide
     */

标签: android

热门推荐