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();
        }
    }
}

Любая помощь будет оценена.

Ответы на вопрос(1)

Ваш ответ на вопрос