diff options
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/settings/location/LocationSettingsBase.java | 72 | ||||
-rw-r--r-- | src/com/android/settings/location/SettingsInjector.java | 2 |
2 files changed, 34 insertions, 40 deletions
diff --git a/src/com/android/settings/location/LocationSettingsBase.java b/src/com/android/settings/location/LocationSettingsBase.java index 8a28039..81e841a 100644 --- a/src/com/android/settings/location/LocationSettingsBase.java +++ b/src/com/android/settings/location/LocationSettingsBase.java @@ -16,60 +16,32 @@ package com.android.settings.location; -import android.content.ContentQueryMap; +import android.app.LoaderManager.LoaderCallbacks; import android.content.Context; +import android.content.CursorLoader; +import android.content.Loader; import android.database.Cursor; +import android.os.Bundle; import android.os.UserManager; import android.provider.Settings; - import android.util.Log; -import com.android.settings.SettingsPreferenceFragment; -import java.util.Observable; -import java.util.Observer; +import com.android.settings.SettingsPreferenceFragment; /** * A base class that listens to location settings change and modifies location * settings. */ -public abstract class LocationSettingsBase extends SettingsPreferenceFragment { +public abstract class LocationSettingsBase extends SettingsPreferenceFragment + implements LoaderCallbacks<Cursor> { private static final String TAG = "LocationSettingsBase"; - private ContentQueryMap mContentQueryMap; - private Observer mSettingsObserver; - - @Override - public void onStart() { - super.onStart(); - // listen for Location Manager settings changes - Cursor settingsCursor = getContentResolver().query(Settings.Secure.CONTENT_URI, null, - "(" + Settings.System.NAME + "=?)", - new String[] { Settings.Secure.LOCATION_PROVIDERS_ALLOWED }, - null); - mContentQueryMap = new ContentQueryMap(settingsCursor, Settings.System.NAME, true, null); - mSettingsObserver = new Observer() { - @Override - public void update(Observable o, Object arg) { - refreshLocationMode(); - } - }; - } - - @Override - public void onResume() { - super.onResume(); - mContentQueryMap.addObserver(mSettingsObserver); - } - @Override - public void onPause() { - super.onPause(); - mContentQueryMap.deleteObserver(mSettingsObserver); - } + private static final int LOADER_ID_LOCATION_MODE = 1; @Override - public void onStop() { - super.onStop(); - mContentQueryMap.close(); + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + getLoaderManager().initLoader(LOADER_ID_LOCATION_MODE, null, this); } /** Called when location mode has changed. */ @@ -101,4 +73,26 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment { Settings.Secure.LOCATION_MODE_OFF); onModeChanged(mode, isRestricted()); } + + @Override + public Loader<Cursor> onCreateLoader(int id, Bundle args) { + switch (id) { + case LOADER_ID_LOCATION_MODE: + return new CursorLoader(getActivity(), Settings.Secure.CONTENT_URI, null, + "(" + Settings.System.NAME + "=?)", + new String[] { Settings.Secure.LOCATION_MODE }, null); + default: + return null; + } + } + + @Override + public void onLoadFinished(Loader<Cursor> loader, Cursor data) { + refreshLocationMode(); + } + + @Override + public void onLoaderReset(Loader<Cursor> loader) { + // Nothing to do here. + } } diff --git a/src/com/android/settings/location/SettingsInjector.java b/src/com/android/settings/location/SettingsInjector.java index 69de713..7bd190c 100644 --- a/src/com/android/settings/location/SettingsInjector.java +++ b/src/com/android/settings/location/SettingsInjector.java @@ -322,7 +322,7 @@ class SettingsInjector { Log.wtf(TAG, "Unexpected what: " + msg); } - // Decide whether to load addiitonal settings based on the new state. Start by seeing + // Decide whether to load additional settings based on the new state. Start by seeing // if we have headroom to load another setting. if (mSettingsBeingLoaded.size() > 0 || mTimedOutSettings.size() > 1) { // Don't load any more settings until one of the pending settings has completed. |