2012-05-02 61 views
0

開始從活動服務的所有教程告訴我這樣做:無法使用startService

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

但沒有構造函數活動,類,所以我得到的語法錯誤

http://developer.android.com/reference/android/content/Intent.html

我試圖用這種方式產生一種服務,

startService(new Intent(getApplicationContext(), MyService.class)); 

但我的服務從未執行。

public class MyService extends IntentService {                                          

    public MyService() {                                               
     super("MyService");                                               
    }                                                     

    @Override                                                   
    protected void onHandleIntent(Intent intent) {                                          
     //do stuff                                                  
    }                                                     

} 

我該如何創建一項服務?

回答:我的Android清單didnt specifcy包

回答

2

(如在評論中發現)實際問題,這裏補充:

這項服務是在不同的包,所以在清單它必須是完全合格的,例如<service android:name="actual.package.of.MyService"/>

老答案:

  1. 如果您嘗試啓動在一個內部類的服務,你不應該寫:

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

    但是:

    startService(new Intent(ActivityName.this, MyService.class)); 
    
  2. 確保您的服務顯示在清單。

  3. onHandleIntent中添加調試打印以查看它是否啓動。
+0

... <服務機器人:名字=「則將MyService」 /> 在我的表現,現在我開始它使用第二行,我知道startService之前的行被調用,因爲我記錄它,但intentHandler中沒有任何內容被稱爲 – tipu

+0

#1,Activity是Context的子類,因此您可以在創建意圖時使用它,#2清單好吧,#3你有沒有嘗試在onHandleIntent中打印一些東西? – MByD

+0

onHandleIntent的第一行是日誌命令以查看它是否運行。 – tipu

0

服務是不是可見

也許你沒有申報清單文件的服務。

我不認爲代碼有任何問題。 覆蓋onstartCommand和onCreate方法,只是把日誌語句,並檢查logcat的