2011-06-16 354 views
2

我在寫我的第一份服務。我的活動運作良好,但是當我打電話給我的服務時,情況並非如此。服務未開始

看起來好像是onCreate()沒有被調用。

我的服務代碼:

public class NeglectedService extends Service { 
    public static final String MY_SERVICE = "android.intent.action.MAIN"; 
    public void onCreate() { 
     Toast.makeText(this, "Service onCreate...", Toast.LENGTH_LONG).show(); 
    } 
} 

我連得到吐司消息。

這裏是我的活動

startService(new Intent(NeglectedService.MY_SERVICE)); 

我的清單

action android:name="android.intent.action.MAIN" 

回答

8

你輸入類似

<service android:name=".subpackagename.ServiceName"/> 

到你的Android清單XML文件?

+0

erm,no。我會檢查需要的地方。 – Saariko 2011-06-17 04:42:05

+0

這有幫助。 SUPER謝謝。 – Saariko 2011-06-17 05:05:04

+0

超漂亮的圓滑的.. – Karthik 2013-06-14 07:28:00

1

使用顯式意圖調用您的服務,而不是使用隱式操作字符串,該字符串無論如何都應該更加獨特。換句話說,在你的活動代碼中使用這個:

startService(new Intent(this, NeglectedService.class)); 

希望幫助!

4

看到作爲NeglectedService.MY_SERVICE只是一個字符串,在您的通話startService你實質上調用:

startService(new Intent("android.intent.action.MAIN")); 

顯然不具備您的特定服務的任何引用,是不是你想要的。相反,要麼註冊特定意圖過濾器的服務,並將其包含在您的意圖中,或按類別調用:

startService(new Intent(this, NeglectedService.class)); 
+0

謝謝Kabuko 我做了這個改變,但它仍然看起來不像服務開始。 不管怎麼說,像你寫的那樣打電話確實更有意義。 謝謝。 – Saariko 2011-06-17 04:47:16

+0

看來我有2個主要問題。你的也幫助解決了我的問題。 – Saariko 2011-06-17 20:34:37