Android学习手册——Loaders使用笔记

Loaders 中文意思加载器


Loaders在Android 3.0中引入的,加载器使它容易异步加载数据 在一个ActivityFragment。 



特点:

  • 他们是用于每一ActivityFragment
  • 他们提供的异步加载数据。
  • 他们监视他们的数据的来源和交付新的结果时 内容的变化。
  • 时自动重新连接到去年装载机的光标 配置更改后重新创建。 因此,他们不需要重新查询 数据。


注:在一个Activity、Fragment中,只有一个LoaderManager实例,但是每一个Activity可以有多个Fragment,所以说一个Activity只有一个LaoderManager实例是不准确的。



常用的类和接口:


LoaderManager:这是一个抽象类,关联在Activity、Fragment上,管理一个或多个Loader,帮助app管理耗时操作在Activity、Fragment的生命周期过程中。最常和 CursorLoader一块使用。每一个Activity或Fragment只有一个FragmentManager对象。一个FragmentManager可以管理多个Loader

LoaderManager.LoaderCallbacks:和LoaderManger关联在一起的回调接口。onCreateLoader()会调方法,创建Loader对象。

Loader:             抽象类,异步加载数据。主要使用CursorLoader。监视数据源的变化,当数据源发生改变的时候,传递新的数据内容。

AsyncTaskLoader:抽象的,提供了一个AsyncTask

CursorLoader:是AsyncTaskLoader的子类,使用ContentResolver查找数据,返回Cursor。加载Cursor数据的时候操作在非UI线程,so,不会阻塞UI线程。该类是查找                                         ContentProvider提供出来的数据的最好的方式。



 使用loader的步骤:


1.Activity、Fragment

2.LoaderManager的实例

3.CursorLoader在后台加载数据--》ContentProvider

4.LoaderManager.LoaderCallbacks实现

5.需要展示数据的:SimpleCursorAdapter

6.数据源:ContentProvider




需要在Activity的onCraete方法中或者是Fragment的onActivityCreated方法中实例化Loader对象:
getLoaderManager().initLoader(0,null, this);
参数:
参数1:给Loader指定id,唯一
参数2:可选项
参数3:LoaderManager.LoaderCallbacks实例。此处让Activity实现了LoaderManager.LoaderCallbacks接口
 
 initLoader()方法调用后,有两种结果:
1.指定id的Loader已经存在,重用。
不存在,创建:onCreateLoader(


 



 


自定义ContentProvider


自定义ContentProvider---》提供私有数据:SQLite

有私有数据:SQLite 

共享:ContentProvider

定义ContentProvider

1.定义ContentProvider子类

2.重写相关方法

3.注册---》清单文件---》application节点内部---》provider:name、authorities(域名)、exported(是否要暴露数据)

可选项:权限

读:readpermission-->值字符串A

发布权限:permission节点:name:值:值字符串A

---》application节点的外面

写:writepermission-->值字符串A

发布权限:permission节点:name:值:值字符串A

---》application节点的外面

 

使用ContentProvider提供出来的数据:

添加相应权限:跟以前使用权限一样

 

UriMatcher:匹配Uri

备匹配:add(authorities, tableName , code)

使用的uri:

Content://authorities/tableName

 

ContentResolver

Uri

备匹配:add(authorities, tableName/# , code)

备匹配:add(authorities, tableName/* , code)

#:数值

*:文本

 

Contenturis.withAppendId()

ContentUris.parseId()

 

Uri.withAppendedPath(contentUri, name);

uri.getLastPathSegment();

 

SearchView:

搜索框,监听事件是setOnQuaryTextLisner

 

 

 






注册了5年了,今天却是第一次写博文。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值