2013-07-23 32 views
1

我有一個服務,並在該服務中我有一個線程。該線程有一個Runnable。從runnable我嘗試發佈通知,但我得到這個錯誤。從服務中連續運行的線程發佈通知

The method setLatestEventInfo(Context, CharSequence, CharSequence, PendingIntent) in the type Notification is not applicable for the arguments (new Runnable(){}, CharSequence, CharSequence, PendingIntent) 

如果我嘗試從外部線程發佈,一切工作正常。 我的應用程序不斷從服務器獲取響應。當有來自服務器的更新數據並且應用程序未運行時,會創建新的通知。爲了避免在主線程上運行,我創建了一個新線程。

回答

1

引用this一個Runnable中並未提及的Context(您ServiceActivity)的實例,但到Runnable實例。

嘗試以下方法:通過

final Context context = this; 
Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     ... 
     setLatestInfo(context, charsequence1, charsequence2, pendingIntent); 
    } 
} 
+1

另一種方式來引用類實例'this'內'Runnable'是使用類名:'MyService.this'。這樣你就不必費心使用一個變量。 – Joffrey

0

它看起來像你定義的上下文是問題。你應該有一個活動或應用程序的上下文。