android - 服务与 AsyncTask

标签 android android-asynctask android-service

我对自己应用的设计感到困惑。我需要不断轮询服务器以从中获取新数据。我很困惑异步任务以固定间隔运行还是服务在后台运行是更好的选择。线程只会在应用程序运行时运行

最佳答案

你的问题已经有了一些答案,但我认为它值得总结......

你需要什么

当您想要运行一段需要一些时间才能完成的代码时,您应该始终在与 UI 线程不同的线程中运行它。

您可以通过两种方式实现:

使用线程:

如果您不需要从新线程到 UI 线程的大量通信,这是最简单的。如果您需要通信,您可能必须使用 Handler 来完成它。

使用AsyncTask:

也在一个单独的线程中运行,并且已经实现了一些与 UI 线程的通信 channel 。因此,如果您需要将此通信返回到 UI,则此方法更可取。

你不需要什么

服务

这主要用于即使在您退出主应用程序后也能保持一些代码运行,并且它将在 UI 线程中运行,除非您使用上述选项生成新线程。你说你的线程应该在你退出应用程序时终止,所以这不是你需要的。

IntentService

这可以由外部事件(即 BroadcastReceiver)激活,即使您的应用程序未运行,该事件也可以启动您定义的一段代码。再一次,根据您的要求,这不是您要找的。

问候。

关于android - 服务与 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13110047/

相关文章:

android - 从服务 Android 调用 toast 时出错

android - 缩放和平移 GPUImageView android

android - AsyncTask 和 setContentView

android - 从库中复制文件时显示 ProgressDialog

java - 使用套接字和 AsyncTask 强制关闭

java - 当调用 Activity 被终止或销毁时,Android 服务将停止工作

java - 如何从xml中引用图像?

java - Eclipse 不会在设备上运行 Android 应用程序

java - 如何在 Mac OS 上设置 Appium 以在 Android 和 iOS 设备上运行来自 JAVA 类的自动化测试

android - 运行 adb shell 命令时需要 :android. 权限。WRITE_SECURE_SETTINGS