3 回答
TA贡献1906条经验 获得超10个赞
在某些情况下,可以用一个AsyncTask
或一个来完成相同的任务,Service
但是通常一个任务比另一个更适合任务。
AsyncTask
s设计用于无法运行UI线程的一次性耗时任务。一个常见的例子是在按下按钮时获取/处理数据。
Service
s旨在持续在后台运行。在上面按下按钮时获取数据的示例中,您可以启动服务,让它获取数据,然后停止它,但这是低效的。使用一次AsyncTask
运行,返回数据并完成的速度要快得多。
但是,如果你需要在后台持续做一些事情,那么Service
你最好的选择。这方面的例子包括播放音乐,不断检查新数据等。
此外,正如谢里夫已经说过的那样,服务并不一定会脱离UI线程。
在大多数情况下,Service
即使您的应用程序Activity
未打开,s也适用于您希望运行代码的时间。AsyncTask
s旨在使UI线程执行代码非常简单。
TA贡献1776条经验 获得超12个赞
Service
是Android框架的一个组件,它不需要执行UI,这意味着即使用户没有主动使用该应用程序,您也可以使用服务执行某些操作。这并不意味着服务将在单独的线程中运行,但它在主线程中运行,并且可以在需要时在单独的线程中执行操作。示例用法是在后台播放音乐,在没有用户交互的情况下在背景中与服务器同步数据等
AsyncTask
另一方面,用于在单独的线程上执行UI阻塞任务。它与创建新线程和执行任务相同,当创建和维护线程并将结果发送回主线程的所有任务都由AsyncTask处理时。示例用法是从服务器获取数据,在内容解析器上获取CRUD操作等
- 3 回答
- 0 关注
- 462 浏览
添加回答
举报