为什么我在这里阅读大部分关于AsyncTask
和装载机的大多数问题的答案,但没有关于服务的内容?服务不是很清楚,还是被弃用或有一些不良属性?有什么区别?
(顺便说一下,我知道还有其他线索,但没有一个真正说明明显的差异,这有助于开发人员轻松决定他是否最好使用这一个或另一个来解决实际问题.)
Com*_*ish 269
在某些情况下,可以用一个AsyncTask
或一个来完成相同的任务,Service
但是通常一个任务比另一个更适合任务.
AsyncTask
s设计用于无法运行UI线程的一次性耗时任务.一个常见的例子是在按下按钮时获取/处理数据.
Service
s旨在持续在后台运行.在上面按下按钮时获取数据的示例中,您可以启动服务,让它获取数据,然后停止它,但这是低效的.使用一次AsyncTask
运行,返回数据并完成的速度要快得多.
但是,如果你需要在后台持续做一些事情,那么Service
你最好的选择.这方面的例子包括播放音乐,不断检查新数据等.
此外,正如谢里夫已经说过的那样,服务并不一定会脱离UI线程.
在大多数情况下,Service
即使您的应用程序Activity
未打开,s也适用于您希望运行代码的时间.AsyncTask
s旨在使UI线程执行代码非常简单.
Service
是Android框架的一个组件,它不需要执行UI,这意味着即使用户没有主动使用该应用程序,您也可以使用服务执行某些操作.这并不意味着服务将在单独的线程中运行,但它在主线程中运行,并且可以在需要时在单独的线程中执行操作.示例用法是在后台播放音乐,在没有用户交互的情况下在背景中与服务器同步数据等
AsyncTask
另一方面,用于在单独的线程上执行UI阻塞任务.它与创建新线程和执行任务相同,当创建和维护线程并将结果发送回主线程的所有任务都由AsyncTask处理时.示例用法是从服务器获取数据,在内容解析器上获取CRUD操作等
服务和asynctasks几乎做同样的事情,差不多.采用服务或的AsyncTask取决于你的需求是什么.
例如,如果你想在点击某个按钮或更改屏幕后从服务器将数据加载到listview,你最好使用asynctask.it与主ui线程并行运行(在后台运行).对于运行asynctack活动或你的应用程序应该在主UI线程上.从应用程序退出后,没有asynctask.
但服务不是那样的,一旦你启动一个服务,它就可以在你退出应用程序后运行,除非你停止服务.我说这取决于你的要求.如果你想继续检查数据接收或检查网络状态你最好还是继续服务.
快乐的编码.
归档时间: |
|
查看次数: |
62599 次 |
最近记录: |