访问SQLite数据库的Android最佳设计实践

问题描述:

在我的Android应用程序中,我有一个本地数据库(SQLite),该应用程序需要查询数据。查询可能需要很长时间(> 5秒),所以我避免使用主UI线程。返回的数据也可能相当大(> 1 MB)。访问SQLite数据库的Android最佳设计实践

在AsyncTasks,Threads,ExecutorService和IntentService之间(也许更多)什么是最好的类/ API在Android中使用这样做?他们所提供的东西都差不多吗?还是有明确的赢家和更适合数据库访问的类?

+0

我认为这是基于意见的,但目前,首选的选择似乎是使用'Loader'类(即'CursorLoader') –

答案,我相信你可以预测,是“它取决于”。

如果您正在编写一组相关的调用(例如,将使用API​​同步您的数据库),那么我想要使用IntentService,因为它是一个长时间运行的操作,并不直接绑定到您的用户界面。

如果是一次性操作触击数据库以获取结果集,我会倾向加载器框架/ CursorLoader以获取用户界面的数据。 AsyncTask是一个选项,虽然它确实是一个更通用的线程机制。此外,请考虑一个ORM框架,它可以为您工作或维护一系列工作项目。

我真的不能想到直接管理线程将是最佳选择的情况。当它有更好的抽象时,它的级别非常低,并且存在很多错误空间。

+0

'Loaders'怎么样? –

+0

是的好点,不知道我怎么忘了!我更新了我的答案 –