diff options
author | Luis Vidal <lvidal@cyngn.com> | 2016-06-07 18:09:52 -0700 |
---|---|---|
committer | Luis Vidal <lvidal@cyngn.com> | 2016-06-08 17:06:27 -0700 |
commit | 325513bf3e5e24d6ef330547ec3cfda63b9a117b (patch) | |
tree | 97bca6447b23e05f44901090727bb8a272f5590e | |
parent | d9c5b0a5ffc9a40992e9297b7d3f28ee4c701c39 (diff) | |
download | android_packages_apps_LockClock-325513bf3e5e24d6ef330547ec3cfda63b9a117b.tar.gz android_packages_apps_LockClock-325513bf3e5e24d6ef330547ec3cfda63b9a117b.tar.bz2 android_packages_apps_LockClock-325513bf3e5e24d6ef330547ec3cfda63b9a117b.zip |
Unregister from WeatherManager ONLY if service was actually registered
Althought haven't found a way to reproduce, there are reports of
IllegalArgumentException thrown by CMWeatherManager because
WeatherSourceListenerService is trying to deregister itself as a
weather service provider change listener when in fact was not
registered. Make use of a flag to confirm if we registered.
Change-Id: I75e653aa60d01d151e9858d3456a69708d9eb2cd
TICKET: CYNGNOS-2989
-rw-r--r-- | src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java b/src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java index 4bc816a..be3b9f8 100644 --- a/src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java +++ b/src/com/cyanogenmod/lockclock/weather/WeatherSourceListenerService.java @@ -32,6 +32,7 @@ public class WeatherSourceListenerService extends Service private static final String TAG = WeatherSourceListenerService.class.getSimpleName(); private static final boolean D = Constants.DEBUG; private Context mContext; + private volatile boolean mRegistered; @Override public void onWeatherServiceProviderChanged(String providerLabel) { @@ -65,15 +66,17 @@ public class WeatherSourceListenerService extends Service final CMWeatherManager weatherManager = CMWeatherManager.getInstance(mContext); weatherManager.registerWeatherServiceProviderChangeListener(this); + mRegistered = true; if (D) Log.d(TAG, "Listener registered"); return START_STICKY; } @Override public void onDestroy() { - final CMWeatherManager weatherManager = CMWeatherManager.getInstance(mContext); - weatherManager.unregisterWeatherServiceProviderChangeListener(this); - if (D) Log.d(TAG, "Listener unregistered"); + if (mRegistered) { + final CMWeatherManager weatherManager = CMWeatherManager.getInstance(mContext); + weatherManager.unregisterWeatherServiceProviderChangeListener(this); + } } @Override |