我应该使用Cursor还是CursorLoader?

时间:2015-06-02 22:40:44

标签: android android-studio android-contentprovider android-contentresolver

我有一个Android应用程序,其中我有一个登录系统和其他一些与服务器通信的东西。有时我只是从网络服务器获得确认,有时我会得到大量数据。到目前为止我使用的是一个简单的数据库今天我实施了一个到目前为止工作的内容提供商。为了从ContentProvider获取数据,我使用了这个$1$6gMKIopE$I.zkP2EvrXHDmApzYoV.B. $1$pkMKIcvE$WQfqzTNmcQr7fqsNq7K2p0 $1$0lMKIuvE$7mOnlu6RZ/cUFRBidK7PK. ,但我看到还有使用CursorLoader的选项。他们之间有什么区别?在我的情况下,我应该使用什么?我还看到我必须在每个类中实现cursorLoader,我不能为它创建一个类并在需要时调用它吗?

1 个答案:

答案 0 :(得分:2)

正如documentation所述,

  

CursorLoader以标准方式实现Loader协议   查询游标,在AsyncTaskLoader上构建以执行游标   查询后台线程,以便它不会阻止   应用程序的UI。

这是使用Loaders的最大优势,即它是异步的。还提到了一些其他重要的优点here

  
      
  1. 他们提供异步数据加载。
  2.   
  3. 他们会监控数据来源,并在内容发生变化时提供新结果。
  4.   
  5. 在配置更改后重新创建时,它们会自动重新连接到上一个加载程序的游标。因此,他们不需要重新查询他们的数据。
  6.   

如果您通过直接查询内容提供程序来使用默认游标,那么您需要处理关闭它们,并且正如您所说,您拥有大量数据,您必须在不同的线程上运行查询代码。出于所有这些目的,使用CursorLoaders更简单有效。有关如何使用的代码,请检查this

关于你的第二个问题,

  

我也看到我必须在每个班级实施它   cursorLoader,我不能为它创建一个类,并在它的时候调用它   需要吗?

您可以很好地创建一个将实现加载器回调的Base类,然后您可以从需要使用CursorLoaders的所有类继承该基类。