Лучший способ использовать TriggerEventListener в фоновом режиме?

Я пытаюсь создать приложение, которое будет работать в фоновом режиме, регистрируя данные о местоположении, при этом пользователю фактически не нужно иметь приложение на переднем плане, но в то же время не использовать слишком много батареи.

Первоначально я думал о настройке BroadcastReceiver для BOOT_COMPLETED и запуске службы, которая использует датчик значительного движения для регистрации данных о местоположении всякий раз, когда он срабатывает, но с момента появления Oreo существуют множество ограничений на фоновые службы.

Каков наилучший способ сделать это?

1 ответ

Ты можешь использовать JobService это эффективно с точки зрения батареи и современного способа выполнить задачу в фоновом режиме.

public class YourJobService extends JobService {
    @Override
    public boolean onStartJob(JobParameters params) {

        if (!Utility.isServiceRunning(GetAlertService.class, getApplicationContext())) {
            startService(new Intent(getApplicationContext(), GetAlertService.class));
        }
        jobFinished(params, false);
        return true;
    }

    @Override
    public boolean onStopJob(JobParameters params) {
        return true;
    }
}

и вы можете настроить его так, как вы хотите, вот так

ComponentName getAlertJobComponent = new ComponentName(context.getPackageName(), YourJobService.class.getName());
JobInfo.Builder getAlertbuilder = new JobInfo.Builder(Constants.getAlertJobid, getAlertJobComponent);
getAlertbuilder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY); // require unmetered network
getAlertbuilder.setRequiresDeviceIdle(true); // device should be idle
getAlertbuilder.setPeriodic(10 * 1000);
getAlertbuilder.setRequiresCharging(false); // we don't care if the device is charging or not
JobScheduler getAlertjobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
getAlertjobScheduler.schedule(getAlertbuilder.build());

Для более подробной информации см. Это интеллектуальное планирование работы

Другие вопросы по тегам