Android3.0后提供了Loader机制,来处理数据加载的实现,你可以通过继承AsyncTaskLoader或是CursorLoader来进行相应的数据加载操作。
使用Loader加载主要涉及到4个类:
- Loader
定义了一个加载实现,比如启动、暂停、取消等方法。 - LoaderInfo
指的是一个具体的加载过程,它持有一个加载实现Loader - LoaderManager
管理着多个加载过程LoaderInfo。 - LoaderManager.LoaderCallbacks
提供与外部交互的回调方法。提供具体的加载类Loader和结果的处理。
Activity或Fragment持有LoaderManager对象,通过调用方法:
initLoader(int id, Bundle args, LoaderManager.LoaderCallbacks<D> callback)
会创建一个LoaderInfo对象,保存在SparseArray集合中,并把callback赋值给LoaderInfo。
当Activity或fragment调用onStart方法是,会调用LoaderManager的doStart方法,会遍历所有的LoaderInfo执行其start方法,这时通过callback的onCreateLoader方法获取具体的加载类Loader,执行Loader的加载操作。
LoaderInfo本身是实现Loader.OnLoadCompleteListener接口的,当Loader执行完后通过OnLoadCompleteListener通知LoaderInfo,LoaderInfo再调用callback的onLoadComplete传递给外部处理结果数据。
参考
http://www.jcodecraeer.com/a/anzhuokaifa/developer/2014/0325/1602.html