我在
Android中实现了一个队列服务,它将根据队列和wifi /数据连接事件更改状态.
我将要发布的事务排队到远程URL.如果设备具有数据或wifi连接,它将迭代队列并将数据发布到URL,直到队列为空,或者存在断开连接事件.
我可以登录我的应用程序,启用飞行模式,生成数据,关闭飞机模式,以及发布交易.即使有成千上万的交易,也不会减速. (我试着稍微掏钱)
输入:低接收!
当3G接收率较低时,我的应用程序速度极慢. (是的,所有上传都发生在ui线程之外.)似乎这种减速的原因与服务器的帖子有很长一段时间发生,有时只是失败.
我的问题是,我该如何解决这个问题?检查信号质量?轮询一个已知地址? Gmail等其他应用如何解决此问题?这必须是一个常见的场景!
解决方法
好吧,如果你可能有数千个需要执行的任务,那么它们肯定应该被管理.您是否考虑过实施自己的
ThreadPoolExecutor
?文档非常好,类很容易理解,但如果您需要示例,请尝试以下站点:
> http://www.javamex.com/tutorials/threads/ThreadPoolExecutor.shtml
> http://javabeanz.wordpress.com/2010/02/19/threadpoolexecutor-basics/
这样做的好处是你可以限制你产生的最大线程数,所以如果你将线程数限制到一个合理的数量,你不应该在全系统范围内减速(对于Android,我建议不要超过20).