Перенести IntentService в WorkManager - PullRequest
0 голосов
/ 09 июля 2020

У меня возникают проблемы с поиском информации о том, как перенести простой IntentService в WorkManager. Я использую IntentService для получения GPS-координат.

Может ли кто-нибудь помочь мне или порекомендовать мне хорошее руководство?

Спасибо, вот мой код, связанный с этим.

IntentService :

public class LocationReceiverService extends IntentService {

    public LocationReceiverService() {
        super(LocationReceiverService.class.getSimpleName());
    }

    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        if (intent != null) {
            final Bundle extras = intent.getExtras();
            if (extras != null) {
                final Location location = (Location) extras.get(Constants.LOCATION_RECEIVED);
                if (location != null) {
                    TradeLocationManager.setCurrentLocation(location);
                }
            }
        }
    }
}

Метод из Службы, вызывающий IntentService:

private void startLocationUpdates() {
    if (!locationUpdating) {
        locationUpdating = true;
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }
        this.mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
        final LocationRequest currentLocationRequest = new LocationRequest();
        currentLocationRequest.setInterval(UPDATE_INTERVAL)
                .setFastestInterval(UPDATE_INTERVAL)
                .setMaxWaitTime(0)
                .setSmallestDisplacement(0)
                .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

        final Intent mRequestLocationUpdatesIntent = new Intent(this, LocationReceiverService.class);
        this.mRequestLocationUpdatesPendingIntent = PendingIntent.getService(getApplicationContext(), 0,
                mRequestLocationUpdatesIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
        this.mFusedLocationClient.requestLocationUpdates(currentLocationRequest, mRequestLocationUpdatesPendingIntent);
    }
}

Объявление IntentService в манифесте

<service
    android:name="com.sagaconsumer.location.LocationReceiverService"
    android:enabled="true"
    android:stopWithTask="true" />
...