我不太可能觸及可能存在的任何屋頂,但有可能我會向IntentService發送大量意圖。IntentService中的隊列大小是否有限制?
我很想知道是否有多少Intents可以發送到IntentService的上限?隊列有大小限制嗎?我在文檔中找不到任何關於此的內容。
在此先感謝
我不太可能觸及可能存在的任何屋頂,但有可能我會向IntentService發送大量意圖。IntentService中的隊列大小是否有限制?
我很想知道是否有多少Intents可以發送到IntentService的上限?隊列有大小限制嗎?我在文檔中找不到任何關於此的內容。
在此先感謝
TL; DR編號
從android源碼(API 19):
它看起來像IntentService
只使用一個普通Looper
和Handler
綁一個線程。
當您使用新的意圖調用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
。
在理論上沒有限制,但應用程序可能會耗盡取決於數據的大小,內存被傳遞。
請務必閱讀列克的回答也。你總是系統資源有限。知道看起來像什麼會很有趣。 Handler後面的隊列結構是什麼?也許是它的限制。 – Nick