Jak mogę anulować JobIntentService? W dokumentach nie widzę żadnych metod, poza tym może z metody API JobSheduler
i metody Context#stopService(...)
, której nie jestem pewien, czy to właściwa metoda.Jak anulować JobIntentService
Odpowiedz
JobIntentService
przynosi tylko IntentService
do Android 8+ że jest bardziej rygorystyczne o usługach tła. Działa jak stary IntentService
s na urządzeniach ze starszymi wersjami Androida.
IntentService
nigdy nie był przeznaczony do anulowania, stąd brak jakiegokolwiek API do anulowania JobIntentService
.
Dlatego JobIntenService
należy używać wyłącznie do pracy, która nie musi być anulowana. Zauważ, że JobIntentService
może być nadal używany do pracy, która może zawodzić, a w konsekwencji zostać przerwana.
pracy, które mogą być anulowane powinny być wykonywane albo:
Activity
(lub jegoViewModel
) do pracy krótki czas trwania- JobService (używając Firebase Praca Dyspozytor lub Job Scheduler jeśli minSdk jest 21)
- usługa zwyczaj planie
Przed wprowadzeniem systemu Android 8.0, JobIntentService
jest zaimplementowany jako IntentService
. IntentService
nie zatrzymuje się ani nie przyjmuje żadnych innych żądań za pomocą jakiegoś działania, dopóki jego metoda onHandleIntent
nie zakończy poprzedniego żądania. stopService
() nie będzie wywoływana, dopóki zadanie nie zostanie zakończone. I jest wywoływana automatycznie, gdy jest. To jest funkcja z IntentService
Ale podobne pytanie już zostało udzielone tutaj, odnosząc się do IntentServices
, mam nadzieję, że to pomaga.
również sprawdzić android developers
Przed Androida 8.0, 'JobIntentService' realizowany jest jako' IntentService'. Chociaż możesz użyć 'stopService()' do zniszczenia 'IntentService', to może nie mieć wpływu na wątek tła używany dla' onHandleIntent() '(nigdy tego nie próbowałem). – CommonsWare