2

我有一个带有 SQLite DB 的 Android 应用程序,其中有几个表,这些表反映了几种类型的对象。我现在和过去都将 SQLite 数据加载到 ArrayLists,然后在列表视图中将数据呈现给用户。几乎将所有需要的数据加载到对象中,将它们保存在内存中并检查以确保没有添加重复项。我在 Application 对象中共享对象,因此我可以跨单独的活动访问它们。

我想知道是否使用加载器并为列表创建内容提供程序是一种更好的方法。我认为从长远来看,它会使代码更简单。加载程序的优点是它在运行中并且在另一个线程上,对吗?我不太关心速度,因为我只有几行要加载,但对于加载器和内容提供者来说,这可能比我现在必须做的管理数据库和临时 ArrayList 更容易。

有人有什么建议吗?同样,速度不是一个大问题,但是否会推荐使用加载器并且更简单?谢谢。

4

1 回答 1

4

Loader 的真正优势在于它不会在查询运行时挂起您的 Activity。在 Activity 中运行查询是不行的;当您等待来自数据库的响应时,您正在阻塞 UI 线程。根据查询结果的大小(不仅仅是行数),这种挂起可能会给用户带来麻烦。

另一方面,Loader 在单独的线程上运行。

此外,它会自动为您提供一个 ContentObserver,以便您可以在数据更改时重新加载数据并查看。我不知道这是否会与您的缓存方案冲突。

于 2013-08-23T02:24:33.580 回答