gpt4 book ai didi

java - 用于与 Web 服务同步的 Android 后台作业

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:08 25 4
gpt4 key购买 nike

您能否告诉我在 Android 中执行同步作业的正确方法是什么(例如,如果我有大约 5 个作业)?
注意!我所说的同步作业是指在后台运行并通过 Web 服务发送一些数据(例如分析)的线程...

有关详细信息,请阅读更详细的说明:

我有一项任务是实现一些后台作业,这些作业会将一些数据与 restful 网络服务同步。一些工作应该以特定的延迟定期安排。如果没有互联网连接,那么我只是缓存数据,稍后当连接重新出现时,我尝试运行这些作业。考虑到创建新线程的成本非常高,尤其是在移动开发中,我正在使用缓存线程池 (ExecutorService),每次请求处理某些操作时,我都会尝试重用线程。我不使用 AsyncTask,因为我已经用这个执行器服务 (Executors.newCachedTreadPool) 替换了它,这对我来说很方便,因为我不需要创建很多 AsyncTask,因为我重用了来自 ES 的线程......为了支持计划的作业,我使用另一个线程池(ScheduledExecutorService)并使用 Callable 因为我需要查看执行结果。我这里有一个复杂的逻辑......所以,当在应用程序中完成特定操作时,第一个线程池(就像 AsyncTask)将像 AsyncTask 一样工作,优点是我不创建新线程但我重新使用它们。这不会阻塞 UI 的主线程。它将委托(delegate)给预定的执行者来完成它的工作。该解决方案有效。这对我来说听起来不错,因为我来自服务器端,但我很想知道这必须如何在 Android 上正确完成?这对于移动应用程序来说是否过于复杂?谢谢,哔叽

最佳答案

使用同步适配器。参见 http://developer.android.com/training/sync-adapters/index.html .同步适配器在后台运行,由系统管理并有效安排,这样您的同步就不会浪费电池电量。最重要的是,系统会自动检测网络连接并在必要时排队同步适配器。如果需要,您可以使用多个同步适配器。

请注意,尽管同步适配器似乎需要内容提供程序和身份 validator ,但实际上它们不需要。

关于java - 用于与 Web 服务同步的 Android 后台作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17890885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com