5

在Android文檔空意圖,服務的「onStartCommand()」具有給定爲一個param的意圖的是,根據該文檔:重新傳送到服務onStartCommand()

「的Intent供給到startService(Intent),給出此。如果該服務在其進程已經消失後正在重新啓動,則它可能爲空,並且之前已返回除START_STICKY_COMPATIBILITY之外的任何內容。「

但是,返回值START_REDELIVER_INTENT應該在重新啓動服務時返回原始意圖。

任何人都可以解釋爲什麼intent可以爲空,即使flag設置爲START_REDELIVER_INTENT

+0

+1:我正在觀察相同的行爲:START_REDELIVER_INTENT給出空意圖。但是,大多數設備都是阿爾卑斯山,特克諾和維科等知名品牌。到目前爲止我還沒有看到任何主流品牌。 –

+0

其實,看看其他一些問題,我發現Google自己的com.google.android.gms.measurement.AppMeasurementService在** Itel **設備上的onStartCommand()中的NullPointerException中崩潰。看起來他們做了一個intent.getAction()而不檢查intent是否爲空。他們使用START_NOT_STICKY服務不應該重新啓動(應避免空意圖)。 –

回答

1

你可能會困惑START_FLAG_REDELIVERYSTART_REDELIVER_INTENT?你的帖子說,「返回值START_FLAG_REDELIVERY」。該常量不是從onStartCommand返回的值之一,它是作爲flags參數傳遞到onStartCommand的位值之一。 START_FLAG_REDELIVERYSTART_STICKY都具有值1.如果您錯誤地在onStartCommand()的末尾有return START_FLAG_REDELIVERY,則服務將以粘性模式重新啓動,並且如果沒有啓動等待,則以空目的重新啓動。

相關問題