2015-12-18 28 views
-2

下面是IntentService源混淆关于Android 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

为什么要投票? ?? – lgw150

回答

0

因为我读this document,我写了一个名为“为MyService”延伸服务的新类,并重写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);

如果您有一些建议,请告诉我!谢谢 !