2012-10-17 14 views
5

Service.START_STICKY çalışmıyor ve daha yakından baktığımda, onCreate()'ın çalıştığını gördüm ama onStartCommand çağrılmıyor.Android service onStartCommand hiç çağrılmadı

Herhangi bir fikir neden?

@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; 
} 

cevap

1

deneyin onCreate() sonunda çizgisini android.os.Debug.waitForDebugger(); eklemek. Hata ayıklayıcı, bunu yapana kadar benim için onStartCommand()'un sınır değerlerine ulaşmadı. Eğer ben aynı durum varsa

+1

Benim için çalıştı. Ancak, bunun bir sorun olduğunu doğrulamak için onCreate yönteminden çıkardığımda sorun ortadan kalkmıştı. – Zeezer

8

, benim Service başlar ve sadece iyi çalışır (onCreate() ve onServiceConnected() hem çağrılır) ama onStartCommand(Intent,int) hiç çağrılmadı. Sistemin, Service'u benim başlamam yerine, Service kodunda açıkça başlattığımı fark ettim. docs göre:

startService(Intent)

arayarak sistemin bir istemci hizmeti açıkça her başlatıldığında tarafından çağrılan [onStartCommand(Intent,int) edilir] Bu yüzden tetiğe onStartCommand(Intent,int) almak için kodda açıkça startService(new Intent(context, MyService.class)) aramak zorunda . Bunu yapmanın, sistem tarafından oluşturulan Hizmeti yeniden başlatmayacağını ve bu Hizmetin yeni bir örneğini oluşturmayacağını unutmayın.