LoaderManager加载器初识

来源:互联网 发布:淘宝仿网红家衣服质量 编辑:程序博客网 时间:2024/06/07 17:21

LoaderManager可以做什么

LoaderManager,相当于一个监听器(观察者),它会实时监听底层数据的变化,一旦数据发生变化,就会通知loader,然后就可以做相应的处理。它的特点是嵌入在每一个Activity或者Fragment中的,且只有一个,我们可以不必关心它何时开启或者关闭,只要对数据进行相应的处理就好了,十分地方便。它在一个单独线程载入数据,监测底层数据源,当探测到有改变时就更新或者重新查询。相当于进入界面的时候就开启了一个AsyncTask去查询我们需要的数据。

比如说,我们有个界面是Android设备上所有已安装的应用程序,然后我们监听系统语言改变和安装卸载改变的广播,一旦广播收到消息,我们就通知界面的loader去查询更新。

LoaderManager概念

  • 每个Activity或者Fragment都有唯一的一个LoaderManager实例,用来启动、停止、保持、重启、关闭它的Loaders。
  • 通常这些事件通过主要的Activity/Fragment声明周期事件来触发,而不是手动(当然也可以手动调用)。
  • Loader的子类会异步载入(译者注:另外再开一个线程,就叫异步了。)数据,所以使用LoaderManager永远不会产生阻塞UI线程的情况。
  • 当配置变化时,它会保持它里面的Loader们的状态,所以并不需要重新查询数据。(比如切换横竖屏)
  • 当Loader的数据源改变,LoaderManager将会从对应的Loader上面接收到一个新的同步载入数据,并将更新数据返回给客户端。
  • 任何Loader将处于三种状态之中,已启动、已停止、重置。处于已停止状态的Loader将会继续监听数据改变,但是不会将结果返回给客户端。在已停止状态,Loader可能被启动或者重启。
  • 当Loader处于重置状态时,将不会执行新的载入操作,也不会发送新的结果集,也不会检测数据变化。

实现LoaderManager.LoaderCallbacks接口

public class SampleActivity extends Activity implements LoaderManager.LoaderCallbacks<D> {  public Loader<D> onCreateLoader(int id, Bundle args) { ... }  public void onLoadFinished(Loader<D> loader, D data) { ... }  public void onLoaderReset(Loader<D> loader) { ... }  /* ... */}
  1. onCreateLoader是一个工厂方法,用来返回一个新的Loader。LoaderManager将会在它第一次创建Loader的时候调用该方法。

  2. onLoadFinished方法将在Loader创建完毕的时候自动调用。

  3. onLoadReset该方法让你可以从就的数据中移除不再有用的数据。

参考

LoaderManager使用详解(一)—没有Loader之前的世界

LoaderManager使用详解(二)—了解LoaderManager

LoaderManager使用详解(三)—实现Loaders

LoaderManager使用详解(四)—实例:AppListLoader

0 0
原创粉丝点击