2012-10-17 7 views
5

Ich bemerkte, dass Service.START_STICKY nicht funktioniert und wenn ich einen genaueren Blick Tokk, sah ich die onCreate() ausgeführt wird, aber OnStartCommand wird nicht aufgerufen.Android-Dienst onStartCommand nie

Irgendwelche Ideen warum?

@Override 
public void onCreate() { 

    mGlobalData = GlobalData.getInstance(); 
    mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

    if (mTimer == null) 
     mTimer = new Timer(); 

    Log.e(TAG, "onCreate()"); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    int t = START_STICKY; 
    Log.e(TAG, "call me redundant BABY! onStartCommand service"); 

    // We want this service to continue running until it is explicitly 
    // stopped, so return sticky. 
    return t; 
} 

Antwort

1

Versuchen Sie, die Linie android.os.Debug.waitForDebugger(); am Ende onCreate() einzufügen. Der Debugger hat die Breakpoints onStartCommand() für mich erst erreicht, als ich das getan habe.

+1

Arbeitete für mich. Aber als ich es aus der onCreate-Methode entfernte, um zu bestätigen, dass dies tatsächlich das Problem war, war das Problem verschwunden. – Zeezer

8

Wenn Sie die gleiche Situation, die ich hatte, mein Service startet und läuft ganz gut (onCreate() und onServiceConnected() beide aufgerufen), aber onStartCommand(Intent,int) wurde nie genannt. Ich fand es, weil das System startete meine Service anstelle von mir explizit die Service in Code zu starten. Nach dem docs: in Code

durch das System jedes Mal, wenn ein Kunde ausdrücklich den Dienst startet durch den Aufruf startService(Intent)

Also musste ich startService(new Intent(context, MyService.class)) nennen explizit onStartCommand(Intent,int) zu Trigger genannt [onStartCommand(Intent,int) ist] zu erhalten . Beachten Sie, dass dadurch der vom System erstellte Dienst nicht neu gestartet wird und auch keine neue Instanz dieses Dienstes erstellt wird.