【问题标题】:What should I use ? Service ? AsyncTask ? Something else?我应该使用什么?服务 ?异步任务?还有什么?
【发布时间】:2016-02-26 17:00:42
【问题描述】:

我正在构建一个 android 应用程序,有时我需要构建一个新的特定“线程”,我们称之为 A。

  • A 将与远程服务器通信(下载图片并发送一些小数据)
  • A 将与我的应用程序的多个活动进行通信(发送 int/string)
  • 即使应用程序关闭也需要保持活力
  • A 将存活一段时间(大约 10 分钟)

A 应该是什么?服务?一个异步任务? 我认为它不能只是一个线程,因为线程与特定活动相关联,但我可能错了。

额外问题:在 A 和我的活动之间进行交流的最佳方式是什么?

感谢您的帮助。

【问题讨论】:

  • 寻找后台绑定服务

标签: android multithreading service android-asynctask


【解决方案1】:

创建一个Bounded service。 它适用于所有点。

【讨论】:

    【解决方案2】:

    在 AsyncTask 文档中你可以看到:

    “AsyncTasks 最好用于短时间的操作(最多几秒钟)。如果您需要保持线程长时间运行,强烈建议您使用 java.util 提供的各种 API。 Executor、ThreadPoolExecutor、FutureTask 等并发包。”

    这种情况不适合

    【讨论】:

      【解决方案3】:

      服务是包装线程并在 UI 关闭后使其保持活动状态的最佳方式。然后,您的服务将通过两种方式与活动通信:通过broadcasting intents 或通过实现callbacks。对于一般情况,我个人更喜欢回调。

      根据我的经验,一个主要问题是让服务保持活动状态并阻止 Android 杀死它以节省内存。仅仅因为我知道这个问题可能会出现,我会说您要么必须向服务添加一个 START_STICKY 标志,要么创建一个 foreground service 而不是后台以保持服务运行。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      相关资源
      最近更新 更多