一段时间后,融合定位API服务被Android终止
对于位置更新,我使用了FusedLocationAPI,但似乎一些Android手机在一段时间后正在扼杀前台服务。如何运行前台服务并确保它们不会被Android终止一段时间后,融合定位API服务被Android终止,android,foreground-service,fusedlocationproviderapi,android-fusedlocation,location-updates,Android,Foreground Service,Fusedlocationproviderapi,Android Fusedlocation,Location Updates,对于位置更新,我使用了FusedLocationAPI,但似乎一些Android手机在一段时间后正在扼杀前台服务。如何运行前台服务并确保它们不会被Android终止 public class LocationUpdatesService extends Service { public class LocalBinder extends Binder { public LocationUpdatesService getService() { return Locat
public class LocationUpdatesService extends Service {
public class LocalBinder extends Binder {
public LocationUpdatesService getService() {
return LocationUpdatesService.this;
}
}
private final IBinder mBinder = new LocalBinder();
@Override
public void onCreate() {
createFusedLocationClient();
createFusedLocationRequest();
createLocationCallback();
startForeground(NOTIFICATION_ID, createAutoUnlockEnabledNotification());
}
private void createFusedLocationClient() {
locationClient = LocationServices.getFusedLocationProviderClient(getApplicationContext());
}
private void createFusedLocationRequest() {
locationRequest = new LocationRequest();
locationRequest.setMaxWaitTime(MAXIMUM_WAIT_TIME);
locationRequest.setSmallestDisplacement(MAXIMUM_DISPLACEMENT);
locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String action = intent.getAction();
if (action != null && action.equalsIgnoreCase(Constants.REQUEST_LOCATION_UPDATES)) {
requestLocationUpdates();
}
if (action != null && action.equalsIgnoreCase(Constants.REMOVE_LOCATION_UPDATES)) {
removeLocationUpdates();
stopSelf();
}
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
ContextCompat.startForegroundService(getApplicationContext(), new Intent(getApplicationContext(),
LocationUpdatesService.class));
return mBinder;
}
}
非传统的方法是onDestroy再次启动服务。