我该怎么用?服务? AsyncTask?别的什么?

时间:2016-02-26 17:00:42

标签: android multithreading service android-asynctask

我正在建立一个Android应用程序,在某些时候我需要构建一个新的特定"线程",让我们称之为A.

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

A应该是什么?服务?一个AsyncTasck? 我认为它不能只是一个线程,因为一个线程链接到一个特定的活动,但我可能是错的。

奖金问题:A和我的活动之间沟通的最佳方式是什么?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

制作Bounded service。 它适用于所有要点。

答案 1 :(得分:1)

在AsyncTask文档中,您可以看到:

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

因此不适用

答案 2 :(得分:1)

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

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