混淆Android IntentService

时间:2015-12-18 06:34:45

标签: android 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;
}

当我使用调试模式启动intentservice的子类时,我发现它首先调用onstart方法然后执行onStartCommand方法,但是在onStartCommand方法中,它不会调用" onStart(intent, startId);"

当我看到源代码时,我认为应首先调用onStartCommond方法,然后在onStartCommond方法中执行onStart方法,结果如上所示,我很困惑,有人帮助我了吗?谢谢

1 个答案:

答案 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);

如果您有什么建议,请告诉我!谢谢!