android - 在 Android 中有效地缓存数据上传

标签 android

我在 Android 中实现了一个队列服务,它会根据队列和 wifi/数据连接事件更改状态。

我将要发布到远程 URL 的事务排队。如果设备有数据或 wifi 连接,它将迭代队列并将数据发送到 url,直到队列为空,或者有断开连接事件。

我可以登录到我的应用程序,启用飞行模式,生成数据,关闭飞行模式,并发布交易。即使有数千笔交易,也不会放慢速度。 (我想把它弄脏一点)

输入:低接收! 当 3G 接收信号很低时,我的应用程序速度会大大降低。 (是的,所有上传都是在 ui 线程之外进行的。)似乎这种速度变慢的原因与向服务器发送邮件需要很长时间才能发生,有时甚至会失败有关。

我的问题是,我该如何解决这个问题?检查信号质量?轮询已知地址? Gmail 等其他应用程序如何解决这个问题?这一定是一个常见的场景!

最佳答案

好吧,如果您可能有数千个任务都需要执行,那么肯定应该对它们进行管理。您是否考虑过实现自己的 ThreadPoolExecutor ?文档非常好,类也很容易理解,但如果您需要示例,请尝试这些站点:

这样做的好处是您可以限制生成的最大线程数,因此如果您将线程数限制在合理的数量(对于 Android,我建议不超过 20 个)。

关于android - 在 Android 中有效地缓存数据上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9255928/

相关文章:

java - 单个 Activity 中的多个 Webview

android - 在 Kotlin 中为 recyclerView 的 child 的 child 设置监听器

java - AndroidAnnotations Rest SourceHttpMessageConverter错误

安卓蓝牙 : Convert ScanResult timestampNanos to System nanoTime

android - 在没有生根的情况下禁用系统/组合栏 Android ICS

javascript - 加载 JavaScript 后如何从 URL 获取 HTML 代码

android - 在android中获取java.lang.NullPointerException

Android - 工具栏中的 SearchView 未展开

java - getSharedPreferences 上的 Android SharedPreferences NullPointerException

android - 是否可以为 res 中的 drawable 创建多个目录?