从3.0开始,Android支持loaders,loaders提供了异步载入数据以及监视数据源的变化的能力。

使用loaders#

初始化Loader#

getLoaderManager().initLoader( /*loader id*/0, 
/*创建loader时的自定义参数*/null,
/*LoaderManager.LoaderCallbacks*/this);
  • 回调对象需要实现:
    • onCreateLoader()方法,这里需要创建一个新的loader。
    • onLoadFinished()方法,
    • onLoadReset()方法,
  • 如果这个loader的id已经有其他loader使用,则之前的loader会被重用。
  • 如果这个loader的id是新的,系统会调用回调对象中的onCreateLoader()。
  • LoaderManager会管理loader的生命周期,因此创建好loader之后就不需要管它了

重新启动Loader#

当需要抛弃已存在的loader中的数据时,可以重启loader

  getLoaderManager().restartLoader(0, null, this);

创建Loader#

通常在onCreateLoader()方法里创建Loader。一般的Android创建的只有CursorLoader,CursorLoader通过查询ContentProvider返回的cursor提供数据源。

响应onLoadFinished和onLoadReset方法#

  • onLoadFinished在loader载入数据后调用,这个方法会确保在loader最后一次载入的数据释放前调用( This method is guaranteed to be called prior to the release of the last data that was supplied for this loader)
  • onLoadReset这个方法的调用表示loader在重新初始化,之前load的数据已经没有用了

自定义Loader#

前面说过Android只提供了CursorLoader一种具体的Loader,我们也可以继承AsyncTaskLoader或者Loader来实现自定义Loader。AsyncTaskLoader提供了在其他线程中载入数据的功能,可扩展性比较好。参考AsyncTaskLoader

参考#

Loaders guider

Loader

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. mybatisplus的坑 insert标签insert into select无参数问题的解决
  3. python起点网月票榜字体反爬案例
  4. Python list sort方法的具体使用
  5. python list.sort()根据多个关键字排序的方法实现
  6. Android(安卓)Bundle类
  7. Android(安卓)Timer类的使用
  8. Android(安卓)StateMachine记录
  9. 几种常用的适配器--Adapter

随机推荐

  1. Android(安卓)Service总结05 之IntentSer
  2. 2021.1.24
  3. 结构体的初级认识
  4. C语言函数的递归(上)
  5. 学习打卡1-24
  6. 记录我发现的第一个关于 Google 的 Bug
  7. 从零学Android(十三)、Android中的数据存储
  8. [置顶] 【小超_Android】2014年框架类源
  9. Android测试框架对比
  10. Android(安卓)搜索 把软键盘上的回车键改