首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于从MySQL DB获取信息的AsyncTask与工作线程

问用于从MySQL DB获取信息的AsyncTask与工作线程
EN

Stack Overflow用户
提问于 2013-03-26 15:09:47
回答 3查看 919关注 0票数 1

我知道我不能从主线程(UI线程)访问MySQL DB。因此,我现在知道我有这样做的选择。我可以使用工作线程( thread t= new Thread() )来访问MySQL db并获取我需要的内容,或者我也可以使用AsyncTask来访问MySQL db并获取所需的内容。

但我的问题是,什么是正确的方法,或者说是最有效的方法?当我遇到这个问题时,我真的很想理解并遵循好的编程过程。

那么从一个MySQL db: AsyncTask,一个工作线程中检索数据,或者会不会有时间,电力等方面的差异?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-26 15:19:47

AsyncTask被设计为围绕线程和处理程序的帮助器类,并不构成通用的线程框架。理想情况下,AsyncTasks应该用于较短的操作(最多几秒钟)。如果您需要让线程长时间运行,强烈建议您使用 java.util.concurrent提供的各种API,如Executor、ThreadPoolExecutor和FutureTask。(直接来自文档)。

http://developer.android.com/reference/android/os/AsyncTask.html。

对于长时间运行的操作,异步任务的另一种选择是robospice。

https://github.com/octo-online/robospice

更新:

使用协程或任何其他线程机制来弃用Asynctask。考虑为可推迟的工作而起诉工作经理。

票数 4
EN

Stack Overflow用户

发布于 2013-03-26 15:17:59

实际上,最好的方法是使用Loaders。更具体的CursorLoader。与AsyncTasks和Threads相比,Loaders的优势在于Cursors将绑定到您的Activity或Fragment生命周期。因此,如果您的AsyncTask或Thread在您的Activity或Fragment停止后结束,并尝试通知一个不再存在的组件,您将不会陷入麻烦。

你可以在How to Use Loaders和Life Before Loaders这里找到一些Loaders的例子。

票数 4
EN

Stack Overflow用户

发布于 2013-03-26 15:14:36

与线程相比,AsyncTask更好

AsyncTask支持正确且轻松地使用UI线程。此类允许在UI线程上执行后台操作和发布结果,而不必操作线程和/或处理程序。

然后通过这个

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15631304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档