我可能不会达到任何可能存在的极限,但我有可能向一个IntentService发送大量的意图。
我很好奇是否有发送到IntentService的意图数量上限?队列有大小限制吗?我在文档中找不到有关这方面的内容。
谢谢。
我可能不会达到任何可能存在的极限,但我有可能向一个IntentService发送大量的意图。
我很好奇是否有发送到IntentService的意图数量上限?队列有大小限制吗?我在文档中找不到有关这方面的内容。
谢谢。
简而言之,不行。
从Android源代码(API 19)来看:
似乎IntentService
只是使用一个普通的Looper
和与线程绑定的Handler
。
当您使用新意图调用IntentService
的启动方法时,它只是将意图作为消息发送到处理程序。
@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
使用的Looper
具有一个MessageQueue
,该队列可以添加无限数量的项目。