Android之cursorLoader进行数据异步加载

来源:互联网 发布:万网单域名控制台登录 编辑:程序博客网 时间:2024/05/18 01:25

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对象。
代码如下:
这里写图片描述

cursorloader的异步操作

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

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

如何使用

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

下面我们直接来看代码,在代码中已经说得很清楚了。各位仔细看。
这里写图片描述
这里写图片描述
这里写图片描述

其中在loadInBackground()方法里面操作的CallLogCursor类如下:
这里写图片描述

最后,运行的结果如下:
这里写图片描述
可以看到,传入的bundle,第一行的打印输出正是我们传入的数据。所以bundle主要是这样用的。

总结

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

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

阅读全文
0 0
原创粉丝点击