下面是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;
}
当我使用调试模式启动intentservice的子类时,我发现它首先调用onstart方法然后执行onStartCommand方法,但是在onStartCommand方法中,它不会调用" onStart(intent, startId);"
当我看到源代码时,我认为应首先调用onStartCommond方法,然后在onStartCommond方法中执行onStart方法,结果如上所示,我很困惑,有人帮助我了吗?谢谢
答案 0 :(得分:0)
当我读到this document时,我写了一个名为" 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方法!所以,我认为,因为我调试了sdk中的android源代码,而不是我项目中的源代码,所以调试不正确run.but我仍然拒绝IntentService.java中的源代码,onStartCommand方法仍然调用onStart (intent,startId);
如果您有什么建议,请告诉我!谢谢!