Верно. Хеннинг и P4u144 поставили меня на правильный путь, чтобы ответить на это более подробно.
Определить свою задачу командой adb shell dumpsys jobscheduler
. Это даст вам огромный результат в следующих категориях:
Вы, скорее всего, заинтересованы в категории Зарегистрировано XX Задания . Это говорит о том, сколько заданий запланировано на устройстве. Например, ваше имя_файла com.foo.bar.application
должно выглядеть как:
JOB #u0a93/17: eec3709 com.foo.bar.application/com.evernote.android.job.v21.PlatformJobService
u0a93 tag=*job*/com.foo.bar.application/com.evernote.android.job.v21.PlatformJobService
Source: uid=u0a93 user=0 pkg=com.foo.bar.application
JobInfo:
Service: com.foo.bar.application/com.evernote.android.job.v21.PlatformJobService
PERIODIC: interval=+15m0s0ms flex=+5m0s0ms
PERSISTED
Requires: charging=false deviceIdle=false
Network type: 2
Backoff: policy=1 initial=+30s0ms
Has early constraint
Has late constraint
Required constraints: TIMING_DELAY DEADLINE UNMETERED
Satisfied constraints: CONNECTIVITY NOT_ROAMING APP_NOT_IDLE DEVICE_NOT_DOZING
Unsatisfied constraints: TIMING_DELAY DEADLINE UNMETERED
Earliest run time: 07:23
Latest run time: 12:23
Ready: false (job=false pending=false active=false user=true)
Совет. Используйте
blockquote>adb shell dumpsys jobscheduler | grep com.foo.bar.application
, чтобы быстро отфильтровать список.Теперь вы можете легко определить, была ли зарегистрирована ваша работа с правильными критериями.
FireBaseJobdispatcher
Если вы используете
FirebaseJobDispatcher
lib, вы можете использоватьadb shell dumpsys activity service GcmService | grep com.foo.bar.debug com.foo.bar.debug:0 v853 u0|com.foo.bar.debug: 3 (scheduled) com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="com.foo.bar.debug.job.FetchArticlesJob" trigger=window{start=10800s,end=11700s,earliest=10448s,latest=11348s} requirements=[NET_UNMETERED,DEVICE_IDLE] attributes=[PERSISTED,RECURRING] scheduled=-351s last_run=N/A jid=N/A status=PENDING retries=0 client_lib=FIREBASE_JOB_DISPATCHER-1} (scheduled) com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="com.foo.bar.debug.job.FetchNotificationGroupsJob" trigger=window{start=86400s,end=129600s,earliest=86048s,latest=129248s} requirements=[NET_CONNECTED,CHARGING] attributes=[PERSISTED,RECURRING] scheduled=-351s last_run=N/A jid=N/A status=PENDING retries=0 client_lib=FIREBASE_JOB_DISPATCHER-1} (scheduled) com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver{u=0 tag="com.foo.bar.debug.job.RemoveUnusedRealmArticlesJob" trigger=window{start=577980s,end=608400s,earliest=521961s,latest=552381s} requirements=[NET_ANY] attributes=[PERSISTED,RECURRING] scheduled=-56018s last_run=N/A jid=N/A status=PENDING retries=0 client_lib=FIREBASE_JOB_DISPATCHER-1} (finished) [com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver:com.foo.bar.debug.job.UpdateNotificationGroupJob,u0] (finished) [com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver:com.foo.bar.debug.job.UpdatePushTokenJob,u0] (finished) [com.foo.bar.debug/com.firebase.jobdispatcher.GooglePlayReceiver:com.foo.bar.debug.job.FetchArticlesJob,u0]
, чтобы проверить, была ли ваша служба запланирована или запущена.
Заставить свою задачу запускать
При создании
Job
вы получаете возвращенныйJOB_ID
. ИспользуйтеJOB_ID
, чтобы заставить задание работать. Вы можете сделать это, используя командуadb shell cmd jobscheduler run
(требуется Android 7.1 или более поздняя).Например, ваше имя_пакета является
com.foo.bar.application
, аJOB_ID
равно 1. Теперь вы можете выполнить свою задачу черезadb
adb shell cmd jobscheduler run -f com.foo.bar.application 1
Не забывайте параметр
-f
, поскольку это заставляет работу запускаться, даже если установленные ограничения не выполняются.Evernote Android Job Lib
Последнее, но не менее важное. Используйте замечательную библиотеку из Evernote для этого. Это позволяет легко осуществлять резервное копирование
JobScheduler
на более низких уровнях API с использованиемJobScheduler
,GcmNetworkManager
илиAlarmManager
в зависимости от вашего уровня API.Редактировать 24/08
Еще лучше использовать библиотеку диспетчера заданий для firebase.
Firebase JobDispatcher - это библиотека для планирования фоновых заданий в приложении для Android. Он предоставляет API, совместимый с JobScheduler, который работает во всех последних версиях Android (API уровня 9+), в которых установлены сервисы Google Play.
blockquote>Надеюсь, это помогло.
Спасибо
Вы можете попробовать поэкспериментировать со свойствами hardsource и кэша.
https://nuxtjs.org/api/configuration-build/#hardsource
https://nuxtjs.org/api/configuration-build/#cache
Это должно сделать последующие сборки намного быстрее