title: requestlocationupdates with time interval not getting location updates in Foreground Service?
body: <p>I created one foreground service to fetch the location for every 1 min somehow this service is not fetching location after sometime like one min.</p>
  
  <p>I am creating one service before oreo background after oreo foreground service with in service I am trying to register for location updates but the problem is after killing app only up to one min I am getting location updates after that there is nothing I can get other than foreground service notification.</p>
  
  <p>MainActivity.java</p>
  
  <pre><code>package com.practice.satya.foreground;
  
  import android.content.Intent;
  import android.os.Build;
  import android.os.Bundle;
  import android.support.v7.app.AppCompatActivity;
  
  public class MainActivity extends AppCompatActivity {
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          startService();
      }
      public void startService() {
          if(Build.VERSION.SDK_INT &gt;25){
              startForegroundService(new Intent(this, LocationFetchInForeground.class));
          }else{
              startService(new Intent(this, LocationFetchInForeground.class));
          }
      }
  }
  
  
  
  </code></pre>
  
  <p>LocationUpdatesReceiver.java</p>
  
  <pre><code>package com.practice.satya.foreground;
  
  import android.app.NotificationChannel;
  import android.app.NotificationManager;
  import android.app.PendingIntent;
  import android.app.TaskStackBuilder;
  import android.content.BroadcastReceiver;
  import android.content.Context;
  import android.content.Intent;
  import android.os.Build;
  import android.support.annotation.RequiresApi;
  import android.support.v4.app.NotificationCompat;
  
  public class LocationUpdatesReceiver extends BroadcastReceiver {
      @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
      @Override
      public void onReceive(Context context, Intent intent) {
          showNotification(context,"Location Changed","Updated location",intent);
      }
      @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
      public void showNotification(Context context, String title, String body, Intent intent) {
          NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
  
          int notificationId = 93;
          String channelId = "testing";
          String channelName = "testing chanel";
          int importance = NotificationManager.IMPORTANCE_HIGH;
  
          if (android.os.Build.VERSION.SDK_INT &gt;= android.os.Build.VERSION_CODES.O) {
              NotificationChannel mChannel = new NotificationChannel(
                      channelId, channelName, importance);
              notificationManager.createNotificationChannel(mChannel);
          }
  
          NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, channelId)
                  .setSmallIcon(R.mipmap.ic_launcher)
                  .setContentTitle(title)
                  .setContentText(body);
  
          TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
          stackBuilder.addNextIntent(intent);
          PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(
                  0,
                  PendingIntent.FLAG_UPDATE_CURRENT
          );
          mBuilder.setContentIntent(resultPendingIntent);
  
          notificationManager.notify(notificationId, mBuilder.build());
      }
  }
  
  </code></pre>
  
  <p>LocationFetchInForeground.java</p>
  
  <pre><code>package com.practice.satya.foreground;
  
  import android.app.Notification;
  import android.app.NotificationChannel;
  import android.app.NotificationManager;
  import android.app.PendingIntent;
  import android.app.Service;
  import android.app.TaskStackBuilder;
  import android.content.Context;
  import android.content.Intent;
  import android.content.pm.PackageManager;
  import android.hardware.Sensor;
  import android.hardware.SensorManager;
  import android.hardware.TriggerEvent;
  import android.hardware.TriggerEventListener;
  import android.location.Location;
  import android.location.LocationManager;
  import android.os.Build;
  import android.os.Bundle;
  import android.os.IBinder;
  import android.support.annotation.RequiresApi;
  import android.support.v4.app.ActivityCompat;
  import android.support.v4.app.NotificationCompat;
  import android.util.Log;
  import android.widget.Toast;
  
  public class LocationFetchInForeground extends Service {
      private SensorManager sensorManager;
      private Sensor sensor;
      private TriggerEventListener triggerEventListener;
  
      /** indicates how to behave if the service is killed */
      int mStartMode;
  
      /** interface for clients that bind */
      IBinder mBinder;
  
      /** indicates whether onRebind should be used */
      boolean mAllowRebind;
  
      private static final String TAG = "MyLocationService";
      private LocationManager mLocationManager = null;
      private static final int LOCATION_INTERVAL = 1000;
      private static final float LOCATION_DISTANCE = 0f;
  
      private class LocationListener implements android.location.LocationListener {
          Location mLastLocation;
  
          public LocationListener(String provider) {
              Log.e(TAG, "LocationListener " + provider);
              mLastLocation = new Location(provider);
          }
  
          @Override
          public void onLocationChanged(Location location) {
              Log.e(TAG, "onLocationChanged: " + location);
              Toast.makeText(getApplicationContext(),"onLocationUpdated", Toast.LENGTH_LONG).show();
              Intent intent=new Intent();
              showNotification(getApplicationContext(),"Location Changed","Updated location",intent);
              mLastLocation.set(location);
          }
  
          @Override
          public void onProviderDisabled(String provider) {
              Log.e(TAG, "onProviderDisabled: " + provider);
          }
  
          @Override
          public void onProviderEnabled(String provider) {
              Log.e(TAG, "onProviderEnabled: " + provider);
          }
  
          @Override
          public void onStatusChanged(String provider, int status, Bundle extras) {
              Log.e(TAG, "onStatusChanged: " + provider);
          }
      }
  
      /*
      LocationListener[] mLocationListeners = new LocationListener[]{
              new LocationListener(LocationManager.GPS_PROVIDER),
              new LocationListener(LocationManager.NETWORK_PROVIDER)
      };
      */
  
      LocationListener[] mLocationListeners = new LocationListener[]{
              new LocationListener(LocationManager.GPS_PROVIDER)
      };
  
  
  
      /** Called when the service is being created. */
      @Override
      public void onCreate() {
  
          if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.O) {
              //For creating the Foreground Service
              NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
              String channelId = Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.O ? getNotificationChannel(notificationManager) : "";
              NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId);
              Notification notification = notificationBuilder.setOngoing(true)
                      .setContentTitle("Location service")
                      .setContentText("This service is used to fetch location in background")
                      .setSmallIcon(R.mipmap.ic_launcher)
                      // .setPriority(PRIORITY_MIN)
                      .setCategory(NotificationCompat.CATEGORY_SERVICE)
                      .build();
              startForeground(1, notification);
          }
          sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
          sensor = sensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION);
  
          triggerEventListener = new TriggerEventListener() {
              @Override
              public void onTrigger(TriggerEvent event) {
                  // Do work
                  Toast.makeText(getApplicationContext(), "Location Updated", Toast.LENGTH_LONG).show();
                  Intent intent = new Intent();
                  showNotification(getApplicationContext(), "Motion Changed", "Updated location", intent);
              }
          };
          if (sensor != null) {
              sensorManager.requestTriggerSensor(triggerEventListener, sensor);
          }
  
  
          Log.e(TAG, "onCreate");
  
          initializeLocationManager();
      }
  
      /** The service is starting, due to a call to startService() */
      @Override
      public int onStartCommand(Intent intent, int flags, int startId) {
          // Let it continue running until it is stopped.
          Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
              try {
  
  //                Intent intenter = new Intent(this,LocationUpdatesReceiver.class);
  //                PendingIntent proximityIntent = PendingIntent.getBroadcast(this, 0, intenter, PendingIntent.FLAG_UPDATE_CURRENT);
  //                mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
  //                        LOCATION_INTERVAL,
  //                        LOCATION_DISTANCE,
  //                        proximityIntent);
                  Intent intenter2 = new Intent(this,LocationUpdatesReceiver.class);
                  PendingIntent proximityIntent2 = PendingIntent.getBroadcast(this, 0, intenter2, PendingIntent.FLAG_UPDATE_CURRENT);
                  mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
                          LOCATION_INTERVAL,
                          LOCATION_DISTANCE,
                          proximityIntent2);
  //
  //            mLocationManager.requestLocationUpdates(
  //                    LocationManager.GPS_PROVIDER,
  //                    LOCATION_INTERVAL,
  //                    LOCATION_DISTANCE,
  //                    mLocationListeners[0]
  //            );
  
              } catch (java.lang.SecurityException ex) {
                  Log.i(TAG, "fail to request location update, ignore", ex);
              } catch (IllegalArgumentException ex) {
                  Log.d(TAG, "network provider does not exist, " + ex.getMessage());
              }
          return START_STICKY;
      }
  
      /** A client is binding to the service with bindService() */
      @Override
      public IBinder onBind(Intent intent) {
          return mBinder;
      }
  
      /** Called when all clients have unbound with unbindService() */
      @Override
      public boolean onUnbind(Intent intent) {
          return mAllowRebind;
      }
  
      /** Called when a client is binding to the service with bindService()*/
      @Override
      public void onRebind(Intent intent) {
  
      }
  
      /** Called when The service is no longer used and is being destroyed */
  
      @Override
      public void onDestroy() {
          super.onDestroy();
          Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
          Log.e(TAG, "onDestroy");
          super.onDestroy();
          if (mLocationManager != null) {
              for (int i = 0; i &lt; mLocationListeners.length; i++) {
                  try {
                      if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &amp;&amp; ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                          return;
                      }
                      mLocationManager.removeUpdates(mLocationListeners[i]);
                  } catch (Exception ex) {
                      Log.i(TAG, "fail to remove location listener, ignore", ex);
                  }
              }
          }
      }
      private void initializeLocationManager() {
          Log.e(TAG, "initializeLocationManager - LOCATION_INTERVAL: "+ LOCATION_INTERVAL + " LOCATION_DISTANCE: " + LOCATION_DISTANCE);
          if (mLocationManager == null) {
              mLocationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
          }
      }
      @RequiresApi(Build.VERSION_CODES.O)
      private String getNotificationChannel(NotificationManager notificationManager){
          String channelId = "ForegroundLocationFetch";
          String channelName = getResources().getString(R.string.app_name);
          NotificationChannel channel = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_HIGH);
          channel.setImportance(NotificationManager.IMPORTANCE_NONE);
          channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
          notificationManager.createNotificationChannel(channel);
          return channelId;
      }
  
      public void showNotification(Context context, String title, String body, Intent intent) {
          NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
  
          int notificationId = 234;
          String channelId = "testing";
          String channelName = "testing chanel";
          int importance = NotificationManager.IMPORTANCE_HIGH;
  
          if (android.os.Build.VERSION.SDK_INT &gt;= android.os.Build.VERSION_CODES.O) {
              NotificationChannel mChannel = new NotificationChannel(
                      channelId, channelName, importance);
              notificationManager.createNotificationChannel(mChannel);
          }
  
          NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, channelId)
                  .setSmallIcon(R.mipmap.ic_launcher)
                  .setContentTitle(title)
                  .setContentText(body);
  
          TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
          stackBuilder.addNextIntent(intent);
          PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(
                  0,
                  PendingIntent.FLAG_UPDATE_CURRENT
          );
          mBuilder.setContentIntent(resultPendingIntent);
  
          notificationManager.notify(notificationId, mBuilder.build());
      }
  }
  
  
  </code></pre>
  
  <p>AndroidManifest.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.practice.satya.foreground"&gt;
  
      &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt;
      &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;
      &lt;uses-permission android:name="android.permission.FOREGROUND_SERVICE" /&gt;
      &lt;uses-feature android:name="android.hardware.location.network"/&gt;
      &lt;uses-permission android:name="android.permission.WAKE_LOCK"/&gt;
      &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
      &lt;application
          android:allowBackup="true"
          android:icon="@mipmap/ic_launcher"
          android:label="@string/app_name"
          android:roundIcon="@mipmap/ic_launcher_round"
          android:supportsRtl="true"
          android:theme="@style/AppTheme"&gt;
          &lt;activity android:name=".MainActivity"&gt;
              &lt;intent-filter&gt;
                  &lt;action android:name="android.intent.action.MAIN" /&gt;
  
                  &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
              &lt;/intent-filter&gt;
          &lt;/activity&gt;
          &lt;service android:name=".LocationFetchInForeground" /&gt;
          &lt;receiver android:name=".LocationUpdatesReceiver"/&gt;
      &lt;/application&gt;
  
  &lt;/manifest&gt;
  
  
  
  </code></pre>