2013-11-21 31 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

在理论上没有限制,但应用程序可能会耗尽取决于数据的大小,内存被传递。