Поскольку PeriodicWork
не имеет состояния FINISHED
, я решил, что я должен использовать setProgressAsync().build()
для обозначения прогрессии ( как здесь ) и вместо этого проверять его состояние RUNNING
, чтобы получить из него выходные данные когда это будет сделано.
Из отладки logcat я узнал, что Observer получает возможность «зондировать» мой Worker 4 раза, пока он работает при условии, что его состояние RUNNING (вся работа занимает всего несколько секунд). Если мое состояние более точное, другими словами progress==100
, тогда оно никогда не доходит до него, я предполагаю, потому что это последняя строка, выполняемая перед оператором return, и действительна в течение голых миллисекунд, прежде чем работа вернется в состояние ENQUEUED
. Получается стабильно при progress=0
. В общем, я чувствую себя довольно сбитым с толку.
Также у моего worker есть объект Data
, который нужно вернуть. Нужно ли мне возвращать его с Result.success(Data_Object)
или с setProgressAsync().build()
вместе с целым числом для прогресса?
adb jobscheduler runner не работает и забивает logcat до такой степени, что приходится перезапускать весь Android Студия. Установка Configuration.Builder
для инициализации по требованию в целях отладки не работает.
Так что, вдобавок ко всему, мне нужно подождать 15 минут между тестами, поскольку это минимальный период времени и это приводит к разочарованию.