запутаться в Android IntentService

ниже два метода источника IntentService

@Override
public void onStart(Intent intent, int startId) {
    Message msg = mServiceHandler.obtainMessage();
    msg.arg1 = startId;
    msg.obj = intent;
    mServiceHandler.sendMessage(msg);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    onStart(intent, startId);
    return mRedelivery ? START_REDELIVER_INTENT : START_NOT_STICKY;
}

когда я запускаю подкласс службы намерений в режиме отладки, я обнаружил, что он сначала вызывает метод onstart, а затем выполняет метод onStartCommand, но в методе onStartCommand он не вызывает «onStart (intent, startId);»

как я увидел источник, я думаю, что сначала следует вызвать метод onStartCommond, а затем выполнить метод onStart в методе onStartCommond, как показано выше, я путаю это, кто-то мне поможет? спасибо


person lgw150    schedule 18.12.2015    source источник


Ответы (1)


когда я читал этот документ, я написал новый класс под названием "MyService", который расширяет Service и переопределить метод onStart и метод onStartCommand, как показано ниже:

@Override
public void onStart(Intent intent, int startId) {
    Log.e(TAG,"onStart");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.e(TAG,"onStartCommand");
    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
    ........
}

после того, как я запускаю MyService, он просто вызывает метод onStartCommand, но метод onStart никогда не вызывается! Итак, я думаю, что, поскольку я отлаживаю источник Android в SDK, а не источник в моем проекте, поэтому отладка неверна как run. но я все еще отказываюсь от источника в IntentService.java, метод onStartCommand по-прежнему вызывает onStart (намерение, startId);

если у вас есть совет, пожалуйста, скажите мне! Спасибо !

person lgw150    schedule 18.12.2015