title: How to prevent Service from getting destroyed
body: <p>I have a <code>Service</code> that tracks the location of user, in a time I get the location of user though of <code>GoogleApiClient</code>.</p>
  
  <p>It Happen some times <code>Service</code> stop, depend of internet or model phone the <code>Service</code> stop sending location to webservice. It seems like it was destroyed.</p>
  
  <p>How can I prevent this?</p>
  
  <pre><code>public class LocationService extends Service implements
          GoogleApiClient.ConnectionCallbacks,
          GoogleApiClient.OnConnectionFailedListener,
          LocationListener {
  
      private static final String TAG = "LocationService";
      public long UPDATE_MILLISECONDS_DEFAULT = 180000;
  
      private boolean currentlyProcessingLocation = false;
      private LocationRequest locationRequest;
      private GoogleApiClient googleApiClient;
  
      @Override
      public void onCreate() {
          Log.d(TAG,"Location service create");
          super.onCreate();
      }
  
      @Override
      public int onStartCommand(Intent intent, int flags, int startId) {
          // if we are currently trying to get a location and the alarm manager has called this again,
          // no need to start processing a new location.
          if (!currentlyProcessingLocation) {
              currentlyProcessingLocation = true;
              startTracking();
          }
  
          return START_NOT_STICKY;
      }
  
      private void startTracking() {
          Log.d(TAG, "startTracking");
  
          if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS) {
              googleApiClient = new GoogleApiClient.Builder(this)
                      .addApi(LocationServices.API)
                      .addConnectionCallbacks(this)
                      .addOnConnectionFailedListener(this)
                      .build();
  
              if (!googleApiClient.isConnected() || !googleApiClient.isConnecting()) {
                  googleApiClient.connect();
              }
          } else {
              Log.e(TAG, "unable to connect to google play services.");
          }
      }
  
      protected void sendLocationToServer(Location location) {
              // here I call my webservice and send location
              Log.d(TAG, "Update to Server location");
      }
  
      @Override
      public void onDestroy() {
          Log.d(TAG,"Destroy service");
          stopLocationUpdates();
          super.onDestroy();
  
      }
  
  
      @Override
      public IBinder onBind(Intent intent) {
          return null;
      }
  
      @Override
      public void onLocationChanged(Location location) {
         sendLocationToServer(location);
      }
  
      public void stopLocationUpdates() {
          if (googleApiClient != null &amp;&amp; googleApiClient.isConnected()) {
              googleApiClient.disconnect();
          }
      }
  
      /**
       * Called by Location Services when the request to connect the
       * client finishes successfully. At this point, you can
       * request the current location or start periodic updates
       */
      @Override
      public void onConnected(Bundle bundle) {
          Log.d(TAG, "onConnected");
  
          locationRequest = LocationRequest.create();
              locationRequest.setInterval(UPDATE_MILLISECONDS_DEFAULT); // milliseconds for default
              locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
  
  
          //locationRequest.setFastestInterval(1000); // the fastest rate in milliseconds at which your app can handle location updates
  
          LocationServices.FusedLocationApi.requestLocationUpdates(
                  googleApiClient, locationRequest, this);
      }
  
      @Override
      public void onConnectionFailed(ConnectionResult connectionResult) {
          Log.e(TAG, "onConnectionFailed");
  
          stopLocationUpdates();
          stopSelf();
      }
  
      @Override
      public void onConnectionSuspended(int i) {
          Log.e(TAG, "GoogleApiClient connection has been suspend");
      }
  
  
  }
  </code></pre>