@Override
 public void onDestroy() {
   super.onDestroy();
   SLog.d(TAG, "Destroying Service " + this.toString());
   // disconnect web socket
   if (connection != null && connection.isConnected()) connection.disconnect();
   // detach active parsing task to prevent NPE
   if (parseTask != null) {
     parseTask.detachCallback();
   }
   // remove location update
   if (locationClient != null && locationClient.isConnected() && locationListener != null) {
     locationClient.removeLocationUpdates(locationListener);
   }
 }
 /** handle incoming message */
 private void handleMessage(String message, WakeLock wakelock) {
   parseTask = new ParseMapPointsAsyncTask(message);
   parseTask.attachCallback(new ParseMapPointsCallback(wakelock));
   // parse in background
   parseTask.execute();
 }