Android之cursorLoader进行数据异步加载

文章链接:http://blog.csdn.net/qq_16628781/article/details/73612568

知识点

  1. cursorloader和cursormanager简介;
  2. cursorloader进行数据异步加载;
  3. onCreateLoader()参数2的介绍;
  4. 新名词记录{cursorloader和cursormanager}

概述

UI中不能做复杂的事情,所以我们很多复杂的事情,会另开一个工作线程来操作,然后才更新到UI上去。这里面有很多方法,thread,runable ,intentservice,AsyncTask…..其实这里我们主要关注的是,工作线程和UI线程如何进行交互的操作。handler无疑是我们用得最多的了,这里也不去叙述了。

我们这里要讲的是另一种更加高效的异步操作的方法,例如我们去获取手机的联系人,通话记录或者是其它任何数据。Android的SDK里面,为我们提供了一个更加简单高效的API,那就是cursorloader了。


LoaderManager对cursorloader的管理

讲到cursorloader,就必须要讲到cursorloader的“管理人员”,因为cursorloader可以创建很多个,我们可以使用一个int类型的id来区分。那么LoaderManager的作用就是根据id来管理每一个cursorloader的对象了。例如初始化,重置,得到cursorloader对象等等的作用。下面我们先来看看如何初始化一个cursorloader对象。
代码如下:
Android之cursorLoader进行数据异步加载

cursorloader的异步操作

这里我也不多讲,只要大家记住几点:
1. 实现LoaderManager.LoaderCallbacks类,T是代表你希望返回的数据是咋样的,可以是string,boolean等基本数据类型,也可以是cursor等等。
2. 当cursorLoader被初始化之后,会首先执行onCreateLoader()方法,执行完之后,会返回T类型的数据。
3. 当onCreateLoader()方法执行完毕,就该执行onLoadFinished()方法了,在这里你就可以进行数据的获取了。
4. 其它的一些方法,比如loader对象被重置了,就会执行onLoaderReset()方法。

注意:onCreateLoader()相当于一个被观察者,onLoadFinished()相当于一个观察者,只要被观察者的数据有改变,那么观察者就能得到通知,并进行相应的响应。

如何使用

这里我是拿到我手机通话记录,一共有3千多条,只要打印20条意思下就好了。

下面我们直接来看代码,在代码中已经说得很清楚了。各位仔细看。
Android之cursorLoader进行数据异步加载
Android之cursorLoader进行数据异步加载
Android之cursorLoader进行数据异步加载

其中在loadInBackground()方法里面操作的CallLogCursor类如下:
Android之cursorLoader进行数据异步加载

最后,运行的结果如下:
Android之cursorLoader进行数据异步加载
可以看到,传入的bundle,第一行的打印输出正是我们传入的数据。所以bundle主要是这样用的。

总结

说白了,感觉cursorloader就是观察者和被观察者之间的关系,只是说Google将UI和工作线程交互的工作做好了,我们直接响应就OK了。这就极大的方便了我们开发的工作了。

以上就是所有内容,如有任何疑问,请及时与我联系,谢谢!

相关文章:

  • 2021-07-24
  • 2022-12-23
  • 2022-01-18
  • 2022-12-23
  • 2021-09-29
  • 2022-01-15
猜你喜欢
  • 2021-07-10
  • 2021-08-04
  • 2021-07-25
  • 2021-10-08
  • 2021-06-23
  • 2022-12-23
相关资源
相似解决方案