2015-12-18 123 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);

如果您有一些建議,請告訴我!謝謝 !