2013-11-21 34 views
3

我不太可能觸及可能存在的任何屋頂,但有可能我會向IntentService發送大量意圖。IntentService中的隊列大小是否有限制?

我很想知道是否有多少Intents可以發送到IntentService的上限?隊列有大小限制嗎?我在文檔中找不到任何關於此的內容。

在此先感謝

回答

5

TL; DR編號

從android源碼(API 19):

它看起來像IntentService只使用一個普通LooperHandler綁一個線程。

當您使用新的意圖調用intent服務的start時,它只是將意圖發送給處理程序作爲消息。

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

的處理程序:

private final class ServiceHandler extends Handler { 
    public ServiceHandler(Looper looper) { 
     super(looper); 
    } 

    @Override 
    public void handleMessage(Message msg) { 
     onHandleIntent((Intent)msg.obj); 
     stopSelf(msg.arg1); 
    } 
} 

Handler用途有MessageQueue不具有可以添加到它的項目的最大數量的Looper

+0

請務必閱讀列克的回答也。你總是系統資源有限。知道看起來像什麼會很有趣。 Handler後面的隊列結構是什麼?也許是它的限制。 – Nick

1

在理論上沒有限制,但應用程序可能會耗盡取決於數據的大小,內存被傳遞。