aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuis Vidal <lvidal@cyngn.com>2016-06-07 18:09:52 -0700
committerLuis Vidal <lvidal@cyngn.com>2016-06-08 17:06:27 -0700
commit325513bf3e5e24d6ef330547ec3cfda63b9a117b (patch)
tree97bca6447b23e05f44901090727bb8a272f5590e
parentd9c5b0a5ffc9a40992e9297b7d3f28ee4c701c39 (diff)
downloadandroid_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.java9
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