【问题标题】:Android best design practice for accessing SQLiteDatabaseAndroid 访问 SQLiteDatabase 的最佳设计实践
【发布时间】:2015-12-16 01:29:18
【问题描述】:

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

在 AsyncTasks、线程、ExecutorService 和 IntentService 之间,(也许更多)在 Android 中使用哪个类/API 来执行此操作最好?就他们提供的东西而言,它们是否都或多或少相同?还是有明显的赢家和更适合数据库访问的类?

【问题讨论】:

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

标签: android android-asynctask android-sqlite android-intentservice


【解决方案1】:

我相信您可以预测,答案是“视情况而定”。

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

如果是一次性操作访问数据库以获取结果集,我会倾向于加载器框架/CursorLoader 来为您的 UI 获取数据。 AsyncTask 是一个选项,尽管它实际上是一种更通用的线程机制。另外,考虑一个 ORM 框架,它可以为您执行线程工作或维护工作项队列。

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

【讨论】:

  • Loaders 呢?
  • 是的,好点,不知道我是怎么忘记的!我更新了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2016-08-11
  • 2022-08-13
相关资源
最近更新 更多