From 184e75146cb17f8695dffba69e0ca8d80b350af3 Mon Sep 17 00:00:00 2001 From: Tom O'Neill Date: Mon, 19 Aug 2013 13:10:19 -0700 Subject: [PATCH] Warn that SettingInjectorService must be fast - Move UPDATE_INTENT to SettingInjectorSErvice Change-Id: I9c8f8dc0878647a051cb852721b3436e9d55b391 --- api/current.txt | 1 + .../android/location/SettingInjectorService.java | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/api/current.txt b/api/current.txt index 118737ff706f3..2ae7af1e3709c 100644 --- a/api/current.txt +++ b/api/current.txt @@ -11813,6 +11813,7 @@ package android.location { ctor public SettingInjectorService(java.lang.String); method protected abstract android.location.SettingInjectorService.Status getStatus(); method protected final void onHandleIntent(android.content.Intent); + field public static final java.lang.String UPDATE_INTENT = "com.android.location.InjectedSettingChanged"; } public static final class SettingInjectorService.Status { diff --git a/location/java/android/location/SettingInjectorService.java b/location/java/android/location/SettingInjectorService.java index d4104084b4b7f..4bfa150f1d08b 100644 --- a/location/java/android/location/SettingInjectorService.java +++ b/location/java/android/location/SettingInjectorService.java @@ -69,6 +69,11 @@ import android.util.Log; * to the user that it is not part of the system settings. * * + * To ensure a good user experience, your {@link #onHandleIntent(Intent)} must complete within + * 200 msec even if your app is not already running. This means that both + * {@link android.app.Application#onCreate()} and {@link #getStatus()} must be fast. If you exceed + * this time, then this can delay the retrieval of settings status for other apps as well. + * * For consistency, the label and {@link #getStatus()} values should be provided in all of the * locales supported by the system settings app. The text should not contain offensive language. * @@ -82,6 +87,7 @@ import android.util.Log; */ // TODO: is there a public list of supported locales? // TODO: is there a public list of guidelines for settings text? +// TODO: would a bound service be better? E.g., we could just disconnect if a service took too long public abstract class SettingInjectorService extends IntentService { /** @@ -106,6 +112,12 @@ public abstract class SettingInjectorService extends IntentService { */ public static final String MESSENGER_KEY = "messenger"; + /** + * Intent action a client should broadcast when the value of one of its injected settings has + * changed, so that the setting can be updated in the UI. + */ + public static final String UPDATE_INTENT = "com.android.location.InjectedSettingChanged"; + private final String mLogTag; /**