5

W dokumentacji Android Służba w "onStartCommand()" ma zamiar przekazana jako param, że zgodnie z dokumentacją:zerowy intencją redelivered do serwisu onStartCommand()

„THE Intent dostarczane startService(Intent), jak podano to. może mieć wartość null, jeśli usługa zostanie uruchomiona ponownie po zakończeniu procesu, a wcześniej zwrócono cokolwiek z wyjątkiem START_STICKY_COMPATIBILITY. "

Jednak zwracana wartość START_REDELIVER_INTENT ma zwrócić pierwotną intencję podczas ponownego uruchamiania usługi.

Czy ktoś może wyjaśnić, dlaczego intent może być pusty, nawet jeśli flag został ustawiony na START_REDELIVER_INTENT?

+0

+1: Obserwuję to samo zachowanie: START_REDELIVER_INTENT daje zerowe intencje. Jednak większość urządzeń to mniej znane marki, takie jak Alpy, Tecno i Wiko. Do tej pory nie widziałem żadnych popularnych marek. –

+0

W rzeczywistości, patrząc na inny problem, widzę, że własna usługa com.google.android.gms.measurement.AppMeasurementService firmy Google zawiesza się z NullPointerException w onStartCommand() na urządzeniach ** Itel **. Wygląda na to, że robią intent.getAction() bez sprawdzania, czy intencja ma wartość zerową. Używają START_NOT_STICKY tam, gdzie usługa nie powinna zostać ponownie uruchomiona (co powinno unikać zerowych zamiarów). –

Odpowiedz

1

Czy prawdopodobnie wprowadzasz w błąd START_FLAG_REDELIVERY z START_REDELIVER_INTENT? Twój post mówi "wartość zwrotu START_FLAG_REDELIVERY". Ta stała nie jest jedną z wartości zwróconych od onStartCommand, jest to jedna z wartości bitowych przekazanych do onStartCommand jako parametr flags. START_FLAG_REDELIVERY i START_STICKY mają wartość 1. Jeśli omyłkowo masz return START_FLAG_REDELIVERY na końcu onStartCommand(), usługa uruchomi się ponownie w trybie lepkim z intencją zerową, jeśli nie ma zaleceń startu w oczekiwaniu.