Найти тему

WorkManager. Как дебажить. Часть 3.

Есть несколько способов:

— Самый простой способ, который, к сожалению, работает только для API 26+. В самой студии нажимаем на App Inspection — выбираем нужное устройство. Из плюсов: тут даже база отображается и можно посмотреть как внутри библиотеки хранятся воркеры. Информации там очень много, так что точно получится найти нужную.

Если переключимся на Background Task Inspector, то увидим все наши воркеры и в каком они сейчас состоянии. Можно кликнуть и посмотреть подробнее.

— adb shell dumpsys jobscheduler. Тут будет очень много различной информации. Прям действительно много. Но среди неё можно найти нужную.

— Также можно включить логирование. Для этого придется написать немного кода. Сначала определяем провайдер в манифесте:

Затем создаём класс Application или добавляем в существующий:

Изменения: https://github.com/Ladgertha/WorkManagers/commit/c346bfdc77e190d36a1b9062d6b7487701c35b98

Готово. Теперь у нас будут логи, которые можно увидеть по ключевым буквам WM:

-3

— Самый странный способ, который у меня не сработал, но он описан в документации. Работает только для версии 2.4.0+: adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGOSTICS" -p "<app_package_name>". Соответственно, для моего приложения это было db shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGOSTICS" -p "ru.ladgertha.workmanagers". Тут должна была появиться информация за последние 24 часа, но у меня было только это:

Broadcasting: Intent { act=androidx.work.diagnostics.REQUEST_DIAGOSTICS flg=0x400000 pkg=ru.ladgertha.workmanagers }

Возможно, я что-то сделала не так. В любом случае, все равно остаётся много способов, которые работают.

-4

Дубль статей в телеграмме — https://t.me/android_junior

Мои заметки в телеграмме — https://t.me/android_junior_notes