Check existence of mWakeLock before releasing it
* Also, unregister connectivity receiver in onDestroy method
diff --git a/src/com/android/exchange/SyncManager.java b/src/com/android/exchange/SyncManager.java
index 6a693f9..b9c835a 100644
--- a/src/com/android/exchange/SyncManager.java
+++ b/src/com/android/exchange/SyncManager.java
@@ -91,6 +91,7 @@
MessageObserver mMessageObserver;
String mNextWaitReason;
IEmailServiceCallback mCallback;
+ ConnectivityReceiver mConnectivityReceiver = null;
RemoteCallbackList<IEmailServiceCallback> mCallbackList =
new RemoteCallbackList<IEmailServiceCallback>();
@@ -545,7 +546,9 @@
INSTANCE.log("+WakeLock not needed for " + alarmOwner(id));
mWakeLocks.remove(id);
if (mWakeLocks.isEmpty()) {
- mWakeLock.release();
+ if (mWakeLock != null) {
+ mWakeLock.release();
+ }
mWakeLock = null;
INSTANCE.log("+WAKE LOCK RELEASED");
}
@@ -634,6 +637,9 @@
mWakeLock.release();
mWakeLock = null;
}
+ if (mConnectivityReceiver != null) {
+ unregisterReceiver(mConnectivityReceiver);
+ }
clearAlarms();
}
@@ -740,8 +746,9 @@
resolver.registerContentObserver(Message.SYNCED_CONTENT_URI, true, mSyncedMessageObserver);
resolver.registerContentObserver(Message.CONTENT_URI, false, mMessageObserver);
- ConnectivityReceiver cr = new ConnectivityReceiver();
- registerReceiver(cr, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
+ mConnectivityReceiver = new ConnectivityReceiver();
+ registerReceiver(mConnectivityReceiver,
+ new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
ConnectivityManager cm =
(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);