summaryrefslogtreecommitdiffstats
path: root/core/java/android/content
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-10-08 14:33:47 -0700
committerDianne Hackborn <hackbod@google.com>2012-10-08 14:33:47 -0700
commit36d337adffa6d1c4c953e83730ad58747f554877 (patch)
tree579d258cc2521af9bfa88a0a1bf190fae58ec53a /core/java/android/content
parentbb5f014ae805f166328d72cbf826e8f1f17c9daf (diff)
downloadframeworks_base-36d337adffa6d1c4c953e83730ad58747f554877.zip
frameworks_base-36d337adffa6d1c4c953e83730ad58747f554877.tar.gz
frameworks_base-36d337adffa6d1c4c953e83730ad58747f554877.tar.bz2
Framework side of issue #7302511: GCM client needs to use new framework API...
...to fix background->shutdown delivery race Add ACTION_STOPPING and ACTION_STARTING to allow such apps to keep track of which users are started/stopped, and be involved in the process of stopping a user. Also get rid of the scale part of the wallpaper transitions, since it seems like I have still failed at getting the user switch to wait until the new wallpaper is displayed. Change-Id: If7e8fdae3544a9d7987a1b9274dc8b49022f6f62
Diffstat (limited to 'core/java/android/content')
-rw-r--r--core/java/android/content/Intent.java72
1 files changed, 58 insertions, 14 deletions
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index c14a703..97d299a 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -2327,7 +2327,9 @@ public class Intent implements Parcelable, Cloneable {
* party applications because a newly initialized user does not have any
* third party applications installed for it.) This is sent early in
* starting the user, around the time the home app is started, before
- * {@link #ACTION_BOOT_COMPLETED} is sent.
+ * {@link #ACTION_BOOT_COMPLETED} is sent. This is sent as a foreground
+ * broadcast, since it is part of a visible user interaction; be as quick
+ * as possible when handling it.
*/
public static final String ACTION_USER_INITIALIZE =
"android.intent.action.USER_INITIALIZE";
@@ -2337,7 +2339,9 @@ public class Intent implements Parcelable, Cloneable {
* brought to the foreground. This is only sent to receivers registered
* through {@link Context#registerReceiver(BroadcastReceiver, IntentFilter)
* Context.registerReceiver}. It is sent to the user that is going to the
- * foreground.
+ * foreground. This is sent as a foreground
+ * broadcast, since it is part of a visible user interaction; be as quick
+ * as possible when handling it.
*/
public static final String ACTION_USER_FOREGROUND =
"android.intent.action.USER_FOREGROUND";
@@ -2347,14 +2351,17 @@ public class Intent implements Parcelable, Cloneable {
* sent to the background. This is only sent to receivers registered
* through {@link Context#registerReceiver(BroadcastReceiver, IntentFilter)
* Context.registerReceiver}. It is sent to the user that is going to the
- * background.
+ * background. This is sent as a foreground
+ * broadcast, since it is part of a visible user interaction; be as quick
+ * as possible when handling it.
*/
public static final String ACTION_USER_BACKGROUND =
"android.intent.action.USER_BACKGROUND";
/**
- * Broadcast sent to the system when a user is added. Carries an extra EXTRA_USER_HANDLE that has the
- * userHandle of the new user. It is sent to all running users. You must hold
+ * Broadcast sent to the system when a user is added. Carries an extra
+ * EXTRA_USER_HANDLE that has the userHandle of the new user. It is sent to
+ * all running users. You must hold
* {@link android.Manifest.permission#MANAGE_USERS} to receive this broadcast.
* @hide
*/
@@ -2362,22 +2369,59 @@ public class Intent implements Parcelable, Cloneable {
"android.intent.action.USER_ADDED";
/**
- * Broadcast sent to the system when a user is started. Carries an extra EXTRA_USER_HANDLE that has
- * the userHandle of the user. This is only sent to
+ * Broadcast sent by the system when a user is started. Carries an extra
+ * EXTRA_USER_HANDLE that has the userHandle of the user. This is only sent to
* registered receivers, not manifest receivers. It is sent to the user
- * that has been started.
+ * that has been started. This is sent as a foreground
+ * broadcast, since it is part of a visible user interaction; be as quick
+ * as possible when handling it.
* @hide
*/
public static final String ACTION_USER_STARTED =
"android.intent.action.USER_STARTED";
/**
- * Broadcast sent to the system when a user is stopped. Carries an extra EXTRA_USER_HANDLE that has
- * the userHandle of the user. This is similar to {@link #ACTION_PACKAGE_RESTARTED},
- * but for an entire user instead of a specific package. This is only sent to
- * registered receivers, not manifest receivers. It is sent to all running
- * users <em>except</em> the one that has just been stopped (which is no
- * longer running).
+ * Broadcast sent when a user is in the process of starting. Carries an extra
+ * EXTRA_USER_HANDLE that has the userHandle of the user. This is only
+ * sent to registered receivers, not manifest receivers. It is sent to all
+ * users (including the one that is being started). You must hold
+ * {@link android.Manifest.permission#INTERACT_ACROSS_USERS} to receive
+ * this broadcast. This is sent as a background broadcast, since
+ * its result is not part of the primary UX flow; to safely keep track of
+ * started/stopped state of a user you can use this in conjunction with
+ * {@link #ACTION_USER_STOPPING}. It is <b>not</b> generally safe to use with
+ * other user state broadcasts since those are foreground broadcasts so can
+ * execute in a different order.
+ * @hide
+ */
+ public static final String ACTION_USER_STARTING =
+ "android.intent.action.USER_STARTING";
+
+ /**
+ * Broadcast sent when a user is going to be stopped. Carries an extra
+ * EXTRA_USER_HANDLE that has the userHandle of the user. This is only
+ * sent to registered receivers, not manifest receivers. It is sent to all
+ * users (including the one that is being stopped). You must hold
+ * {@link android.Manifest.permission#INTERACT_ACROSS_USERS} to receive
+ * this broadcast. The user will not stop until all receivers have
+ * handled the broadcast. This is sent as a background broadcast, since
+ * its result is not part of the primary UX flow; to safely keep track of
+ * started/stopped state of a user you can use this in conjunction with
+ * {@link #ACTION_USER_STARTING}. It is <b>not</b> generally safe to use with
+ * other user state broadcasts since those are foreground broadcasts so can
+ * execute in a different order.
+ * @hide
+ */
+ public static final String ACTION_USER_STOPPING =
+ "android.intent.action.USER_STOPPING";
+
+ /**
+ * Broadcast sent to the system when a user is stopped. Carries an extra
+ * EXTRA_USER_HANDLE that has the userHandle of the user. This is similar to
+ * {@link #ACTION_PACKAGE_RESTARTED}, but for an entire user instead of a
+ * specific package. This is only sent to registered receivers, not manifest
+ * receivers. It is sent to all running users <em>except</em> the one that
+ * has just been stopped (which is no longer running).
* @hide
*/
public static final String ACTION_USER_STOPPED =