我对自己应用的设计感到困惑。我需要不断轮询服务器以从中获取新数据。我很困惑异步任务以固定间隔运行还是服务在后台运行是更好的选择。线程只会在应用程序运行时运行
最佳答案
你的问题已经有了一些答案,但我认为它值得总结......
你需要什么
当您想要运行一段需要一些时间才能完成的代码时,您应该始终在与 UI 线程不同的线程中运行它。
您可以通过两种方式实现:
使用线程
:
如果您不需要从新线程到 UI 线程的大量通信,这是最简单的。如果您需要通信,您可能必须使用 Handler
来完成它。
使用AsyncTask
:
也在一个单独的线程中运行,并且已经实现了一些与 UI 线程的通信 channel 。因此,如果您需要将此通信返回到 UI,则此方法更可取。
你不需要什么
服务
这主要用于即使在您退出主应用程序后也能保持一些代码运行,并且它将在 UI 线程中运行,除非您使用上述选项生成新线程。你说你的线程应该在你退出应用程序时终止,所以这不是你需要的。
IntentService
这可以由外部事件(即 BroadcastReceiver
)激活,即使您的应用程序未运行,该事件也可以启动您定义的一段代码。再一次,根据您的要求,这不是您要找的。p>
问候。
关于android - 服务与 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13110047/