2011-11-18 85 views
1

我只是不能在這裏得到什麼錯誤。服務不收到意圖/額外

Activity.java:

... 
Intent intent = new Intent(Activity.this, Service.class); 
intent.putExtra(Service.KEY_TEST, "123456789"); 
startService(intent); 
... 

Service.java:

... 
private Intent intent; 
public static final String KEY_TEST; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    Log.d("TEST", intent.getStringExtra(KEY_TEST)); // when I remove this line, 
    // it works, otherwise gives NullPointerException and FC's 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    this.intent = intent; 
    return START_STICKY; 
} 
... 

的服務顯然沒有收到活動發出的臨時演員。當我嘗試獲取之前發送的任何附加信息時,應用程序部隊會關閉,LogCat會給出NullPointerException。當我移除我試圖獲得額外功能的線路時,該應用程序不會強制關閉,但我顯然不會收到額外的任務。

+0

你會得到什麼錯誤?怎麼了?什麼不會發生?很難說出你想要的問題。 –

+0

在代碼中閱讀我的問題的標題和我的評論。 Log.d ...行強制關閉應用程序。 LogCat抱怨NullPointerException,所以不會收到額外的內容。當我刪除線沒有力量關閉,但我顯然不會收到我的額外。 –

+0

您應該專門在您的問題中編寫它,而不是在標題或代碼塊中。 –

回答

5

,就把這行Log.d("TEST", intent.getStringExtra(KEY_TEST));中,

onStartCommand(Intent intent, int flags, int startId)方法..

編輯:

欲瞭解更多信息使用壽命cyclces如何如下,看看這個Service Lifecycle

+0

我不敢相信我做了這樣的小動作。我想這是3小時不間斷編碼後發生的情況。奇蹟般有效。 –

+0

我可以接受你的問題之前有3分鐘的時間限制。爲什麼在我的情況下沒有在onCreate中接收額外的工作? –

+0

因爲您的意圖是由onStartCommand()方法中的服務接收的,而不是在onCreate()中,所以這就是原因。快樂編碼.. :-) – user370305

0

onStartCommand()發生在onCreate()方法之後。