在我的Android应用中,我有一个应用程序需要查询数据的本地数据库(SQLite)。查询可能需要很长时间(> 5秒),因此我避免使用主UI线程。返回的数据也可能相当大(> 1 MB)。
在AsyncTasks,Threads,ExecutorService和IntentService之间,(以及更多)在Android中使用的最佳类/ API是什么?它们提供的内容是否大致相同?或者是否有明确的赢家和更适合数据库访问的类?
答案 0 :(得分:1)
答案,我相信你能预测,是“它取决于”。
如果您正在编写一组相关的调用(例如,将使用API同步您的数据库),那么我会想要使用IntentService,因为它是一个长期运行的操作,并不直接与您的用户界面绑定。
如果是一次性操作命中数据库以获得结果集,我会倾向于加载器框架/ CursorLoader
来获取UI的数据。 AsyncTask
是一个选项,虽然它确实是一个更通用的线程机制。另外,请考虑一个ORM框架,它可以为您执行线程工作或维护工作项队列。
我真的不能想到直接管理Thread会是最好的选择。当它有更好的抽象时,它的级别非常低,并且有很多错误空间。