Android ContentProvider / Loader与加载到对象

时间:2013-08-22 23:59:06

标签: android sqlite android-contentprovider loader

我有一个带有SQLite DB的Android应用程序,其中有几个表反映了几种类型的对象。我现在并且在过去将SQLite数据加载到ArrayLists之前,在列表视图中向用户显示数据。几乎将所有必需的数据加载到对象中,将它们保存在内存中并检查以确保不添加重复项。我在Application对象中共享对象,因此我可以在不同的活动中访问它们。

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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