5

Nella documentazione di Android, il servizio "onStartCommand()" ha un intento dato come un param, che secondo la documentazione:intento nullo riconsegnato al Servizio onStartCommand()

"il Intent forniti a startService(Intent), come dato questo. potrebbe essere nullo se il servizio viene riavviato dopo che il suo processo è andato via, e in precedenza aveva restituito qualcosa eccetto START_STICKY_COMPATIBILITY. "

Tuttavia, il valore restituito START_REDELIVER_INTENT deve restituire l'intento originale al riavvio di un servizio.

Qualcuno può spiegare perché un intent può essere nullo, anche se lo flag è stato impostato su START_REDELIVER_INTENT?

+0

+1: Sto osservando lo stesso comportamento: START_REDELIVER_INTENT dà intenti nulli. Tuttavia, la maggior parte dei dispositivi sono di marchi meno noti come Alps, Tecno e Wiko. Non ho visto nessun marchio mainstream finora. –

+0

In realtà, osservando qualche altro problema, vedo che il proprio com.google.android.gms.measurement.AppMeasurementService di Google si arresta in modo anomalo con NullPointerException in onStartCommand() su dispositivi ** Itel **. E sembra che facciano un intent.getAction() senza verificare se l'intento è nullo. Utilizzano START_NOT_STICKY dove il servizio non dovrebbe essere riavviato (il che dovrebbe evitare intenti nulli). –

risposta

1

Stai forse confondendo START_FLAG_REDELIVERY con START_REDELIVER_INTENT? Il tuo post dice "il valore restituito START_FLAG_REDELIVERY". Quella costante non è uno dei valori restituiti da onStartCommand, è uno dei valori di bit passati in onStartCommand come parametro flags. START_FLAG_REDELIVERY e START_STICKY hanno entrambi il valore 1. Se per errore si dispone di return START_FLAG_REDELIVERY alla fine di onStartCommand(), il servizio verrà riavviato in modalità permanente con un intento nullo se non vi è alcun ordine di inizio sospeso.

Problemi correlati