android中的asynctask和service之间的区别

时间:2015-04-10 07:57:46

标签: android service android-asynctask handler

我是Android编程的初学者,当我了解有关服务的内容时,问题就变成了。 我们都知道UI线程不能运行一个长时间的进程,所以我们应该在一个新的线程中运行它们,我们立即认识到Handler AsyncTask和Service的某些东西甚至在任务完成后发送BroadCast。但是,我不确定何时使用它们。

例如,我们经常使用活动登录,当数据发布时,可能发布到远程服务器,可能需要花费很长时间,我们无法在LoginActivity中写一些东西,可能是在AsyncTask或Service中那样做。但哪个是更​​好的选择?

3 个答案:

答案 0 :(得分:0)

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

AsynkTack会在您需要并在后台执行时启动。完成后,线程就会被破坏。

答案 1 :(得分:0)

作为一般规则:

  • 服务在后台运行,并为某些(定期)工作 您。例如,如果您想每15分钟从REST-API获取新闻 分钟并通知应用程序内的用户或通知 而不是使用服务。
  • AsyncTask是一个用于工作密集型作业的分离线程 防止UI线程阻塞。例如,获取新闻后 用户点击"获取新闻"按钮。

在您的情况下,用户的期望很重要。用户尝试登录并在活动中等待服务器的响应。您应该在AsyncTask中将请求发送到服务器,例如在响应出现之前向用户显示等待屏幕("尝试登录")。因此UI仍然响应,但用户清楚地知道,他必须等待回复。

答案 2 :(得分:0)

服务 - 服务是一个可以在后台执行长时间运行的应用程序组件,它不提供用户界面。服务是一个没有UI的任务。总是在主线程上运行,也可以阻止主thread.We可以通过调用方法startService()

来启动服务

AysnTask - AsyncTask类允许在后台运行指令并再次与主线程同步。它还报告了正在运行的任务的进度。用于并行任务。我们通过调用方法execute()来启动它。在工作线程上工作并从主线程触发。它不能在循环中运行。