5

In der Android-Dokumentation, der Dienst des „onStartCommand()“ hat eine Absicht als param gegeben, dass nach dem docs:null Absicht auf Service onStartCommand nachgeliefert()

„die Intent-startService(Intent) geliefert, wie angegeben Dies. kann null sein, wenn der Dienst neu gestartet wird, nachdem sein Prozess beendet wurde, und zuvor alle Daten außer START_STICKY_COMPATIBILITY zurückgegeben wurden. " Der Rückgabewert START_REDELIVER_INTENT soll beim Neustart eines Dienstes die ursprüngliche Absicht zurückgeben.

Kann jemand erklären, warum ein intent Null sein kann, selbst wenn flag auf START_REDELIVER_INTENT gesetzt wurde?

+0

+1: Ich beobachte das gleiche Verhalten: START_REDELIVER_INTENT gibt null Absichten. Allerdings sind die meisten Geräte von weniger bekannten Marken wie Alps, Tecno und Wiko. Ich habe bisher keine Mainstream-Marken gesehen. –

+0

Wenn ich mir ein anderes Problem anschaue, sehe ich, dass Googles eigener com.google.android.gms.measurement.AppMeasurementService mit der NullPointerException in onStartCommand() auf ** Itel ** Geräten abstürzt. Und es sieht so aus, als würden sie eine intent.getAction() ausführen, ohne zu überprüfen, ob die Absicht null ist. Sie verwenden START_NOT_STICKY, wo der Dienst nicht neu gestartet werden soll (was Null-Intents vermeiden sollte). –

Antwort

1

Können Sie möglicherweise START_FLAG_REDELIVERY mit START_REDELIVER_INTENT verwirren? Ihr Beitrag sagt, "der Rückgabewert START_FLAG_REDELIVERY". Diese Konstante ist keiner der Werte, die von onStartCommand zurückgegeben werden. Es ist eines der Bitwerte, die als onStartCommand als flags Parameter übergeben wurden. START_FLAG_REDELIVERY und START_STICKY haben beide einen Wert von 1. Wenn Sie versehentlich return START_FLAG_REDELIVERY am Ende von onStartCommand() haben, wird der Dienst im Sticky-Modus mit einer Null-Absicht neu gestartet, wenn keine Start-Empfehlungen ausstehen.

Verwandte Themen