概述
欢迎关注WX公众号:
Android之cursorLoader进行数据异步加载
文章链接:http://blog.csdn.net/qq_16628781/article/details/73612568
知识点
- cursorloader和cursormanager简介;
- cursorloader进行数据异步加载;
- onCreateLoader()参数2的介绍;
- 新名词记录{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的异步操作
这里我也不多讲,只要大家记住几点:
- 实现LoaderManager.LoaderCallbacks类,T是代表你希望返回的数据是咋样的,可以是string,boolean等基本数据类型,也可以是cursor等等。
- 当cursorLoader被初始化之后,会首先执行onCreateLoader()方法,执行完之后,会返回T类型的数据。
- 当onCreateLoader()方法执行完毕,就该执行onLoadFinished()方法了,在这里你就可以进行数据的获取了。
- 其它的一些方法,比如loader对象被重置了,就会执行onLoaderReset()方法。
注意:onCreateLoader()相当于一个被观察者,onLoadFinished()相当于一个观察者,只要被观察者的数据有改变,那么观察者就能得到通知,并进行相应的响应。
如何使用
这里我是拿到我手机通话记录,一共有3千多条,只要打印20条意思下就好了。
下面我们直接来看代码,在代码中已经说得很清楚了。各位仔细看。
其中在loadInBackground()方法里面操作的CallLogCursor类如下:
最后,运行的结果如下:
可以看到,传入的bundle,第一行的打印输出正是我们传入的数据。所以bundle主要是这样用的。
总结
说白了,感觉cursorloader就是观察者和被观察者之间的关系,只是说Google将UI和工作线程交互的工作做好了,我们直接响应就OK了。这就极大的方便了我们开发的工作了。
以上就是所有内容,如有任何疑问,请及时与我联系,谢谢!
最后
以上就是自信钥匙为你收集整理的Android之cursorLoader进行数据异步加载的全部内容,希望文章能够帮你解决Android之cursorLoader进行数据异步加载所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复