2011-01-21 35 views
55

我有一個處理程序必須每5秒在logcat中寫入「Hello」的服務。但是它不會在logcat上寫任何東西......這就像服務沒有執行,並且我在它上面放置了一個斷點,並且調試模式從不停止在斷點上。這個簡單的服務爲什麼不啓動?

我啓動該服務,在我的應用程序的第一個活動,與此:

startService(new Intent(GPSLoc.this, MyServiceNotifications.class)); //enciendo el service 

我確信代碼startService被執行,因爲它開始另一個活動之前調用,而其他活動啓動。

這是我服務的代碼:嗨,你所寫的代碼工作正常

public class MyServiceNotifications extends Service { 

    boolean serviceStopped; 

    private Handler mHandler; 
    private Runnable updateRunnable = new Runnable() { 
     @Override 
     public void run() { 
      if (serviceStopped == false) 
      { 
       createNotificationIcon(); 
      } 
      queueRunnable(); 
     } 
    }; 

    private void queueRunnable() { 
     // 600000 : cada 10 minutos, comprueba si hay nuevas notificaciones y actualiza la 
     // notification BAR 
     mHandler.postDelayed(updateRunnable, 5000); 

    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     serviceStopped = false; 

     // //////////////////////////////////////MANEJADOR SIMILAR A UN HILO 
     mHandler = new Handler(); 
     queueRunnable(); 
     // ///////////////////////////////////// FIN MANEJADOR 
    } 

    @Override 
    public void onDestroy() { 
     serviceStopped = true; 
    } 

    @Override 
    public void onStart(Intent intent, int startid) { 

    } 

    public void createNotificationIcon() 
    { 
     Log.d("MyServiceNotifications", "Hello"); 
    }  
} 
+10

您是否在清單文件中聲明服務? – Franco 2011-01-21 14:07:56

+0

把一個logcat放在onCreate()裏面,它會被使用嗎?另外,你什麼時候在updateRunnable上調用run()?我看不到執行 – Jimmy 2011-01-21 14:08:30

+0

ohh真實,我原諒投入maNIFEST!謝謝 – NullPointerException 2011-01-21 14:14:04

回答

163

您是否在AndroidManifest.xml中聲明服務?

13

。可能是在關閉應用程序標記之前忘記清單文件中的以下代碼。

<application> 
    .... 
    <service android:name=".MyServiceNotifications"/> 
</application> 
+2

我的投票是「關閉應用程序標記之前」。程序員犯了愚蠢的錯誤! – 2015-09-08 06:52:48

+0

如果您在清單中運行分析...檢查代碼,則會顯示此信息。 「 – Merk 2016-05-24 18:42:34

58

非常重要:名字空間正確,例如:

<service android:name="com.example.data.synchronization.SynchronizationService"/> 
AndroidManifest.xml以前它被(錯誤)

<service android:name="com.example.data.SynchronizationService"/> 

無此項服務開始無錯誤信息

0

如果使用Xamarin的Droid做到這一點的最簡單方法是將類標記爲這樣的服務:

[Service] 
public class LongRunningTaskService : Service 
{ 
    ... 
} 

那麼就沒有必要把它在AndroidManifest.xml。

相關問題