2012-10-17 26 views
5

Service.START_STICKYが動作しないことに気がつきました。私はよく見ると、onCreate()は実行されていますが、onStartCommandは呼び出されませんでした。AndroidサービスonStartCommandは決して呼び出されません

なぜでしょうか?

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

答えて

1

onCreate()の終わりにラインandroid.os.Debug.waitForDebugger();を挿入するようにしてください。私がこれをするまで、デバッガは私のためにonStartCommand()のブレークポイントに達しませんでした。

+1

私のために働いた。しかし、問題が実際に問題であることを確認するためにonCreateメソッドからそれを削除したとき、問題は消えていました。 – Zeezer

8

あなたは私が持っていた同じような状況を持っている場合、私はService起動し、うまく動作します(onCreate()onServiceConnected()が両方呼び出されます)が、onStartCommand(Intent,int)が呼ばれることはなかったです。私はシステムが私の代わりにServiceを明示的に起動していることがわかりました。Serviceをコードに入れました。 docsによると:

[onStartCommand(Intent,int)がさ]を、すべての時間は、クライアントが明示的にstartService(Intent)

を呼び出すことにより、サービスを開始だから私はトリガーにonStartCommand(Intent,int)を取得するには、コードで明示的にstartService(new Intent(context, MyService.class))を呼び出すために持っていたシステムによって呼び出さ。これを実行しても、システムによって作成されたサービスは再起動されず、そのサービスの新しいインスタンスも作成されません。

関連する問題