LoaderManager - Android 3.0中的新功能

来源:互联网 发布:双屏异显 源码 编辑:程序博客网 时间:2024/06/03 02:21

在Android 3.0中提供了一个新概念Loaders,通过LoaderManager类可以很轻松的异步加载数据从Fragment或Activity 中,Loaders提供了回调机制通知最终的运行结果,有点类似AsyncTask类,但由于Loader对于并发可以用过Loader管理器统一管理,所以更适合批量处理多个异步任务的处理(当然内部仍然是多线程)。下面就让Android123一起和大家看下honeycomb中的新特性吧,对于解决多重异步I/O加快Android平板应用的运行是十分有效的。

一、LoaderManager

LoaderManager类位于android.app.LoaderManager,提供了以下几个方法:

abstract void  destroyLoader(int id) //停止并移除loader通过ID
abstract void  dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args)  //打印LoaderManager的状态到一个流中
static void  enableDebugLogging(boolean enabled) //启用debug记录
abstract <D> Loader<D>  getLoader(int id) //返回找到的ID或没有匹配的在Loader中
abstract <D> Loader<D>  initLoader(int id, Bundle args, LoaderCallbacks<D> callback)  //初始化Loader使其成为活动状态
abstract <D> Loader<D>  restartLoader(int id, Bundle args, LoaderCallbacks<D> callback)  //启动一个新的或重启一个存在的Loader在管理器中

同时LoaderManager还有一个回调接口android.app.LoaderManager.LoaderCallbacks<D> 用于和LoaderManager交互:

abstract Loader<D>  onCreateLoader(int id, Bundle args)  //举例并返回一个新Loader通过ID
abstract void  onLoadFinished(Loader<D> loader, D data)  //当前面一个Loader已经完成时回调
abstract void  onLoaderReset(Loader<D> loader)  //当一个新的loader或存在的loader重启时回调

二、Loader

Loader类位于android.content.Loader<D>,整体比较复杂,主要成员有

1. 构造方法  Loader(Context context) //作为唯一实例化方法参数只有一个Context

2. Public Methods

void  abandon()  //高速Loader他在绑定
String  dataToString(D data)  //用于调试,转换一个Loader数据类的实例为字符串用于打印
void  deliverResult(D data) //发送一个load注册的listener结果
void  dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) //打印loader状态通过给定的流
void  forceLoad()  //强制一个异步载入
Context  getContext()  //返回Context实例
int  getId()
boolean  isAbandoned()  //判断是否已经绑定
boolean  isReset()  //判断是否已经重启
boolean  isStarted()  //判断是否已经执行
void  onContentChanged() //内容变化回调

registerListener(int id, OnLoadCompleteListener<D> listener)
void  reset() //重置一个Loader的状态
final void  startLoading()  //启动一个异步的载入从Loader的数据
void  stopLoading()  //停止载入
boolean  takeContentChanged() String  toString()
void  unregisterListener(OnLoadCompleteListener<D> listener)

提供的子类 android.content.Loader.ForceLoadContentObserver 和 接口 android.content.Loader.OnLoadCompleteListener<D>

为了更清晰的表达Android开发网给出一个SDK例子完整代码,来作分析: