2017-08-28 11 views
7

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

+0

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

Odpowiedz

0

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 jego ViewModel) 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
1

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.

answered question

również sprawdzić android developers