【发布时间】:2013-11-21 15:41:07
【问题描述】:
我不太可能遇到任何可能存在的问题,但我可能会向 IntentService 发送大量意图。
我很想知道您可以向 IntentService 发送多少 Intent 是否有上限?队列有大小限制吗?我在文档中找不到任何关于此的内容。
提前致谢
【问题讨论】:
标签: android intentservice
我不太可能遇到任何可能存在的问题,但我可能会向 IntentService 发送大量意图。
我很想知道您可以向 IntentService 发送多少 Intent 是否有上限?队列有大小限制吗?我在文档中找不到任何关于此的内容。
提前致谢
【问题讨论】:
标签: android intentservice
tl;博士号
来自安卓源(API 19):
看起来IntentService 只是使用绑定到线程的常规Looper 和Handler。
当您使用新意图在意图服务上调用 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 使用的Looper 有一个MessageQueue,它没有可以添加的最大项目数。
【讨论】:
理论上没有限制,但根据传入的数据大小,应用可能会耗尽内存。
【讨论】: