android 中异步任务和服务之间的区别

difference between asyntask and service in android

我是Android编程的初学者,当我学习到Service的时候,问题就变成了。 我们都知道 UI 线程不能 运行 一个长时间的进程,所以我们应该 运行 它们在一个新线程中,并且立即,我们已经认识到一些关于 Handler AsyncTask 和 Service甚至在任务完成时发送 BroadCast finished.However,我不确定何时使用它们。

比如我们经常使用一个activity登录,当数据要posted时,可能post到远程服务器,可能会耗费很长时间,我们不能在 LoginActivity 中写一些东西,也许在 AsyncTask 或 Service 中做 that.But 哪个是更好的选择?

一项服务运行一直在您设备的后台运行。

AsynkTack 在您需要时启动并在后台执行。完成后,线程将被销毁。

一般规则:

  • 一项服务在后台 运行 并为 你。例如,如果你想每 15 次从 REST-API 中获取新闻 分钟,并在应用程序内或通过通知通知用户 而不是使用服务。
  • A​​syncTask 是工作密集型作业的独立线程 防止 UI 线程阻塞。例如在之后获取新闻 用户单击 "Get News" 按钮。

在您的情况下,用户的期望很重要。用户尝试登录并在 activity 中等待服务器的响应。您应该在 AsyncTask 中将请求发送到服务器,例如向用户显示等待屏幕,直到出现响应 ("Try to login")。所以 UI 仍然有响应,但用户清楚地知道,他必须等待响应。

服务 - 服务是可以在后台执行长时间运行宁操作的应用程序组件,它不提供用户interface.A服务是没有[=15]的任务=] 总是在主线程上,也可以阻塞主线程 thread.We 可以通过调用方法 startService()

来启动服务

AysnTask - AsyncTask class 允许在后台执行 运行 指令并再次与主线程同步。它还报告 运行ning tasks.Used 中任务的进度 parallel.We 通过调用方法 execute() 启动它。在工作线程上运行并从主 thread.It 触发不能 运行 在循环中。