https://hackernoon.com/android-location-tracking-with-a-service-80940218f561
roid O (8.0.0+) (API 26+), Как получить обновление служб определения местоположения, когда приложение находится в фоновом режиме или убивает. В Android-приложении "Strava" (доступно наМагазин игр), службы определения местоположения работают правильно, когда приложение находится в фоновом режиме или убивает. Мне нужно создать такую же функциональность в моем приложении. Всякий раз, когда я начинаю использовать сервис
startService(new Intent(this, GpsServices.class));
Затем метод onDestroy вызывается через 10 секунд, когда приложение находится в режиме ожидания (приложение находится в фоновом режиме или уничтожается). Ниже мой код.
public class GpsServices extends Service implements LocationListener, Listener {
@Override
public void onCreate() {
mLocationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
if (mLocationManager != null) {
mLocationManager.addGpsStatusListener(this);
}
if (mLocationManager != null) {
mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
500,
0,
this);
}
}
public void onLocationChanged(Location location) {
System.out.println("location = [" + location + "]");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// If we get killed, after returning from here, restart
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// We don't provide binding, so return null
return null;
}
/* Remove the locationlistener updates when Services is stopped */
@Override
public void onDestroy() {
try {
mLocationManager.removeUpdates(this);
mLocationManager.removeGpsStatusListener(this);
stopForeground(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Любая помощь будет оценена.