为了账号安全,请及时绑定邮箱和手机立即绑定

Android:AsyncTask vs Service

Android:AsyncTask vs Service

慕无忌1623718 2019-07-26 11:25:11
Android:AsyncTask vs Service为什么我在这里阅读大部分关于AsyncTask和装载机的大多数问题的答案,但没有关于服务的内容?服务不是很清楚,还是被弃用或有一些不良属性?有什么区别?(顺便说一句,我知道还有其他线索,但没有一个真正说明明显的差异,这有助于开发人员轻松决定他是否最好使用这一个或另一个来解决实际问题。)
查看完整描述

3 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

在某些情况下,可以用一个AsyncTask或一个来完成相同的任务,Service但是通常一个任务比另一个更适合任务。

AsyncTasks设计用于无法运行UI线程的一次性耗时任务。一个常见的例子是在按下按钮时获取/处理数据。

Services旨在持续在后台运行。在上面按下按钮时获取数据的示例中,您可以启动服务,让它获取数据,然后停止它,但这是低效的。使用一次AsyncTask运行,返回数据并完成的速度要快得多。

但是,如果你需要在后台持续做一些事情,那么Service你最好的选择。这方面的例子包括播放音乐,不断检查新数据等。

此外,正如谢里夫已经说过的那样,服务并不一定会脱离UI线程。

在大多数情况下,Service即使您的应用程序Activity未打开,s也适用于您希望运行代码的时间。AsyncTasks旨在使UI线程执行代码非常简单。


查看完整回答
反对 回复 2019-07-26
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

服务完全不同:服务不是线程

您的Activity绑定到服务,并且该服务包含一些函数,这些函数在调用时会阻塞调用线程。您的服务可能用于将温度从摄氏度更改为度数。任何绑定的活动都可以获得此服务。


但是AsyncTask,一个Thread在后台执行一些工作,同时能够将结果报告回调用线程。

只是一个想法:服务可能有一个AsyncTask对象!


查看完整回答
反对 回复 2019-07-26
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

Service是Android框架的一个组件,它不需要执行UI,这意味着即使用户没有主动使用该应用程序,您也可以使用服务执行某些操作。这并不意味着服务将在单独的线程中运行,但它在主线程中运行,并且可以在需要时在单独的线程中执行操作。示例用法是在后台播放音乐,在没有用户交互的情况下在背景中与服务器同步数据等

AsyncTask另一方面,用于在单独的线程上执行UI阻塞任务。它与创建新线程和执行任务相同,当创建和维护线程并将结果发送回主线程的所有任务都由AsyncTask处理时。示例用法是从服务器获取数据,在内容解析器上获取CRUD操作等


查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 462 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信