有关Loader加载器的使用方法和总结

Loader  加载器(加载任务) 3.0之后出现的类

          作用:类似于AsyncTask异步任务,提供一个子线程进行数据的加载,并且会在子线程执行结束之后自动调用指定方法,在方法中根据加载的数据处理UI的更新即可。

 1.使用步骤

(1)LoaderManager  加载管理器:用于稍后启动加载器  

获取方式:

如果获取的是android.app包内的LoaderManager继承Activity,调用getLoaderManager方法即可;

如果获取的是support.v4包内的LoaderManager继承FragmentActivity,调用getSupportLoaderManager方法即可;

(2)通过LoaderManager对象调用initLoader方法启动加载器

Loader loader = lm.initLoader(id, args, callback);

参数1int id, 给当前启动的加载器设置唯一标识

参数2args,初始化Loader对象的参数,可以为null

参数3callbackLoaderManager.LoaderCallbacks的实现,LoaderManager调用来报告

Loader事件,给当前启动的加载任务提供回调接口,接口中的泛型用于指定数据加载结果的类型

LoaderManager.LoaderCallbacks接口中的方法:

onCreateLoader(int id, Bundle args)

onLoadFinished(Loader<D> loader, D data)

onLoaderReset(Loader<D> loader)

(3)创建一个AsyncTaskLoader的子类,并且,在onCreateLoader方法中将给子类对象返回

AsyncTaskLoader  Loader的子类,用于处理任意的加载操作,如读取数据库,连网读取数据等。

注: 在创建子类时,该子类必须是外部类或者静态内部类

(4)重写子类中的相关方法,并在AsyncTaskLoader的子类手动添加onStartLoading方法,并且在该方法中手动调用forceLoad方法(如果不添加,则程序不会执行下去)

(5)在loadInBackground方法中处理数据的加载,将加载结果作为该方法的返回值返回


(6)onLoadFinished方法中获取加载结果,刷新页面即可

2.关于LoaderAsynTaskLoader中的细节问题:

1. AsyncTaskLoaderLoader的子类。

2. 关于LoaderCallback接口的作用:为了重写接口中的抽象方法,因为这些方法代码加载过程中的一些特殊时刻,如开始或者结束的时候

3. 关于LoaderCallback接口中的方法和AsyncTaskLoader子类中的方法:

a) 这些方法中只有loadInBackground方法中的代码时运行在子线程中,其余方法均为运行在主线程中

b) 可以在AsyncTaskLoader的子类中手动添加方法:deliverResult(Cursor data参数代表数据加载的结果该方法会onLoadFinished之后运行,也可选择在此方法中更新页面,此方法也可不写

4. initLoader方法中的参数12

a)参数1: int id ,给启动的加载任务分配一个唯一标识,当通过LoaderManager对象多次调用initLoader方法时,根据每次传递的id值是否相同进行判断,如果相同,不再重新运行onCreateLoader等流程,而是直接运行onLoadFinished方法,调用之前下载好的数据进行显示,如果不相同:重新运行onCreateLoader等流程,创建新的Loader对象,进行新一次数据加载

   如果想要让相同idLoader重新运行,可选择使用restartLoader方法,该参数会被自动传递到onCreateLoader方法中

b)参数2: Bundle对象,该参数会被自动传递到onCreateLoader方法中

3.Loader的特点:

1、对每个ActivityFragment都有效

2、提供了异步加载数据的机制

3、监视数据源的一举一动,并在内容改变时传送新的结果

4、由于配置发生变化而重新被创建后,它们会自动重新连接到上一个加载器的游标,所以不必重新查询数据


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值