Должен ли WorkManager использоваться с SyncAdapter? - PullRequest
0 голосов
/ 06 июня 2018

Раньше можно было обеспечить серию обновлений, используя IntentService или SyncAdapter с WakeLock.

Теперь, с новым режимом Doze и ограничениями для экономии заряда аккумулятора, WakeLock все еще достаточно надежен или должен работать дольшезапускаться в IntentService или SyncAdapter с помощью WorkManager?

Также готов ли WorkManager api к работе?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Я бы не стал использовать JobScheduler или AlarmManager.WorkManager сидит поверх них и обрабатывает все для вас, не имеет значения, на какой версии Android работает ваше приложение.

https://codelabs.developers.google.com/codelabs/android-workmanager Вот хороший пример WorkManager, где они используют Worker дляобработка изображений, но это очень хорошо для выполнения любых длительных задач.Вы можете указать ограничения на различные вещи, в том числе, если вы хотите, чтобы устройство не использовалось для запуска работника.Вы также можете связать работников в цепочку, передать данные от одного к другому, даже сгруппировать их и выполнить несколько параллелей, дождаться завершения всех и затем продолжить работу с другим (или более) работниками.В зависимости от вашего варианта использования, вы можете в основном запускать работника из любой точки (активность, приемник вещания, STC).

На самом деле я использую работников, запущенных из приемника вещания, для выполнения некоторых вызовов API, только когда у вас есть Интернет.Конечно, это соединение (настраиваемое ограничение), и его так легко настроить и он работает так хорошо, что я могу только рекомендовать его использовать (и благословить Google за окончательное создание этих библиотек AC).Мне также очень нравится тот факт, что WorkManager сохраняет работы в БД с комнатой, поэтому он может забрать его, когда все условия проверяются, даже если вы перезапускаете устройство между ними.Если у вас настроен какой-то мониторинг (например, stetho), вы можете увидеть, как он сохраняет задания в своей собственной базе данных.

Он все еще в альфа-версии, но он настолько прочный, что я не думаю, чтоони слишком сильно изменятся, пока не выпустят финальную версию.

0 голосов
/ 06 июня 2018

Насколько я понимаю, WorkManager может полностью заменить IntentService и SyncAdapter.Например, все, что вы делаете в SyncAdapter.onPerformSync(), теперь может быть в WorkManager.doWork().

И он все еще находится в альфа-фазе (в настоящее время 1.0.0-alpha02): https://developer.android.com/topic/libraries/architecture/adding-components#workmanager

Относительно блокировок пробуждения: В Android 8.0 есть следующее изменение:

В качестве одного из изменений, которые вносит Android 8.0 (уровень API 26), чтобы улучшить время автономной работы, когда ваше приложение переходит в кэшированное состояние без активных компонентов, система освобождает любые блокировочные функции, которые поддерживает приложение.

Так что я бы не стал больше полагаться на пробужденные замки.Я думаю, что они будут полностью удалены в будущих версиях Android.И в большинстве случаев они вам не нужны с WorkManager.

...