android CursorLoader 实现总结

时间:2022-09-22 22:54:13

工作要求向数据库中插入数据,同时显示到UI上,我们找到了CursorLoader。这个工具很强大,大大简化了代码的复杂度。android 3.0提供了Loader机制。这里是他们的继承关系,比较可以得到清晰明确的框架关系。

java.lang.Object
   ↳ android.content.Loader<D>
     ↳ android.content.AsyncTaskLoader<D>
       ↳ android.content.CursorLoader

对于CursorLoader,利用好google提供的接口LoaderManager以及为其注册事件的接口LoaderManager.LoaderCallbacks<Cursor>就可以实现我们需要的功能。

public interface LoaderCallbacks<D> {  
    public Loader<D> onCreateLoader(int id, Bundle args);  
    public void onLoadFinished(Loader<D> loader, D data);  
    public void onLoaderReset(Loader<D> loader);  
} 
方法onCreateLoader是创建Loader时候调用,是为了提供查询的配置。会在loader初始化也就是注册这个接口的时候调用。此时紧接着会调用getSupportLoaderManager().initLoader(0, null, this);  然后到加载完毕时调用方法OnLoadFinished,将数据传递到Adapter进行显示。

方法onLoaderReset是在我们的配置发生变化的,使用restartLoader(int , Bundle ,LoaderManager.LoaderCallbacks<D>)方法重新初始化loader之后调用,一般是用来释放对前面loader查询到的结果引用。

Loader和CursorLoader的关系:

Loader是核心,其已经实现了基本功能;

AsyncTaskLoader继承自Loader,主要任务就是将耗时操作从主线程中剥离出来;

CursorLoader继承自AsyncTaskLoader,是泛型类的一个具体类,也是我们最常用Loader。

结构图解:

android CursorLoader 实现总结


下面附上实现的代码工程:http://download.csdn.net/detail/u013614207/7471125