Мой менеджер работ не работает после уничтожения приложения - PullRequest
1 голос
/ 22 октября 2019

Мое приложение для Android не запускает рабочий менеджер, когда я убил приложение. Рабочий менеджер перестает работать, когда процесс приложения завершен.

Мой код:

PeriodicWorkRequest workRequest =
                new PeriodicWorkRequest.Builder(UploadWorker.class, 1, TimeUnit.MINUTES)
                        .setConstraints(constraints)
                        .build();
        WorkManager.getInstance().enqueue(workRequest);

, и я также применил Jobscheduler, но программа работает, когда приложение еще живо в процессе. но когда приложение закрыто, рабочий менеджер не работает. Я установил периодическое время 1 min.

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Минимальный интервал для PeriodicWork составляет 15 минут. Можете ли вы изменить интервал до 15 и проверить. Пожалуйста, проверьте

https://medium.com/@yonatanvlevin/the-minimum-interval-for-periodicwork-is-15-minutes-same-as-jobscheduler-periodic-job-eb2d63716d1f

https://stackoverflow.com/a/51074388/2131915

0 голосов
/ 22 октября 2019

Я получил ответ, большое спасибо. На самом деле WorkManager - это совсем не то, что Jobschduler. После ограничения на фоновые сервисы в более поздней версии для Oreo было запущено 3-4 метода для фоновых сервисов. Это: Firebase FCM JobSchduler WorkManger

, но обслуживание здесь другое. Если вы хотите закрыть или убить приложение, вам нужно упомянуть диспетчер тревог и установить время.

Таким образом, вам нужно 1 Maninactivity, где вы можете упомянуть свой WorkManager, а затем вам также нужно внедрить Alarm Manager. Код для диспетчера тревог:

// Alarm Manager
        int i=30;
        Intent intent = new Intent(this, MyBroadcastReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                this.getApplicationContext(), 234324243, intent, 0);
        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        assert alarmManager != null;
        alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ (i * 1000), pendingIntent);

Теперь вы можете запустить службу в фоновом режиме. Время Remmeber будет составлять минимум 30 секунд, вы также можете запускаться через каждые 2 секунды, но если у вас есть приложение в playstore и целевой SDK приложения - oreo или больше, чем oreo, playstore отключит ваше приложение согласно политике согласно документации. если вам нужна дополнительная информация, тогда оставьте комментарий, я напишу больше об этом. Теперь у меня есть информация о JobSchduler, WorkManager.

...