5

それが機能しないことに気付きService.START_STICKYました。詳しく見てみると、onCreate() が実行されているのに 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;
}
4

2 に答える 2

15

あなたが私と同じ状況にある場合、私のService起動と実行は問題なく実行されますが (両方onCreate()とも呼び出されます)、呼び出されることはありません。私が明示的にin コードを開始するのではなく、システムが my を開始したことが原因であることがわかりました。ドキュメントによると:onServiceConnected()onStartCommand(Intent,int)ServiceService

[ onStartCommand(Intent,int)is] は、クライアントが明示的に呼び出してサービスを開始するたびに、システムによって呼び出されますstartService(Intent)

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

于 2015-12-04T16:17:10.740 に答える
2

android.os.Debug.waitForDebugger();の最後に行を挿入してみてくださいonCreate()。これを行うまで、デバッガーはonStartCommand()のブレークポイントに到達しませんでした。

于 2013-04-23T13:04:27.867 に答える