LoaderCallbacks函数

来源:互联网 发布:java orm 框架 2017 编辑:程序博客网 时间:2024/06/06 03:50

参考文档:http://blog.csdn.net/guoshaobei/article/details/17451647

Loaders机制在Android 3.0版本后引入。Loaders机制使一个Activity或者一个Fragment更加容易异步加载数据。Loaders有如下的特性:

Ø  它们适用于任何Activity和Fragment;

Ø  它们提供了异步加载数据的机制;

Ø  它们检测数据源,当数据源内容改变时它们能够传递新的结果;

Ø  当配置改变后需要重新创建时,它们会重新连接到最后一个loader的游标。这样,它们不需要重新查询它们的数据。


1、启动/初始化LoaderManager

在一个Activity或Fragment里,LoaderManager管理一个或多个loader实例。每个Activity或Fragment只有一个LoaderManager。

你可要在Activity里的onCreate()方法里,或者在Fragment里的onActivityCreated()方法里初始化一个loader。

在Activity里面:getSupportLoaderManager().initLoader(LOADER_ID,null, callbacks);
在Fragment里面: getLoaderManager().initLoader(LOADER_ID,null, callbacks);

getLoaderManager().initLoader(0, null, this);第一个参数是当前activity里面loader的ID,一般为0,第二个参数一般置null,第三个就是实现了LoaderManager.LoaderCallbacks的类,一般就是当前activity。这句代码执行之后就会执行onCreateLoader,然后去查询,查询结束之后就会执行onLoadFinished,做你需要做的事情。一般就在第二个方法里面利用查询结果,如传递到一个adapter进行显示。第三个方法onLoaderReset是在我们的配置发生变化的,使用restartLoader(int , Bundle ,LoaderManager.LoaderCallbacks<D>)方法重新初始化loader之后调用的,一般是用来释放对前面loader查询到的结果引用。对Loader的使用只需要在重新初始化之前去除引用,退出activity时候不需要关闭cursor释放资源。


2、需要复写接口

LoaderManager.LoaderCallbacks包含了三个方法:

A、onCreateLoader()--- 实例化和返回一个新创建的给定ID的loader

public abstract Loader<D> onCreateLoader (int id, Bundle args)

Parameters
id The ID whose loader is to be created.
args Any arguments supplied by the caller.
Returns
Return a new Loader instance that is ready to start loading.

B、onLoadFinished()--- 当一个创建好的loader完成了load,调用此函数

public abstract void onLoadFinished (Loader<D> loader, D data)

loader The Loader that has finished.dataThe data generated by the Loader.

Parameters
loaderThe Loader that has finished.dataThe data generated by the Loader.

onLoaderReset()--- 当一个创建好的loader要被reset,调用此函数,这样导致它的数据无效

Parameters
loaderThe Loader that is being reset.


0 0
原创粉丝点击