您的位置:首页 > 移动开发 > Android开发

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

2015-05-14 17:20 399 查看
Loaders 中文意思加载器Loaders在Android 3.0中引入的,加载器使它容易异步加载数据 在一个ActivityFragment

特点:

他们是用于每一个
Activity
Fragment
他们提供的异步加载数据。他们监视他们的数据的来源和交付新的结果时 内容的变化。时自动重新连接到去年装载机的光标 配置更改后重新创建。 因此,他们不需要重新查询 数据。注:在一个Activity、Fragment中,只有一个LoaderManager实例,但是每一个Activity可以有多个Fragment,所以说一个Activity只有一个LaoderManager实例是不准确的。

常用的类和接口:

LoaderManager:这是一个抽象类,关联在Activity、Fragment上,管理一个或多个Loader,帮助app管理耗时操作在Activity、Fragment的生命周期过程中。最常和CursorLoader一块使用。每一个Activity或Fragment只有一个FragmentManager对象。一个FragmentManager可以管理多个LoaderLoaderManager.LoaderCallbacks:和LoaderManger关联在一起的回调接口。onCreateLoader()会调方法,创建Loader对象。Loader: 抽象类,异步加载数据。主要使用CursorLoader。监视数据源的变化,当数据源发生改变的时候,传递新的数据内容。AsyncTaskLoader:抽象的,提供了一个AsyncTaskCursorLoader:是AsyncTaskLoader的子类,使用ContentResolver查找数据,返回Cursor。加载Cursor数据的时候操作在非UI线程,so,不会阻塞UI线程。该类是查找 ContentProvider提供出来的数据的最好的方式。

使用loader的步骤:

1.Activity、Fragment2.LoaderManager的实例3.CursorLoader在后台加载数据--》ContentProvider4.LoaderManager.LoaderCallbacks实现5.需要展示数据的:SimpleCursorAdapter6.数据源: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定义ContentProvider1.定义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/tableNameContentResolverUri备匹配:add(authorities, tableName/# , code)备匹配:add(authorities, tableName/* , code)#:数值*:文本Contenturis.withAppendId()ContentUris.parseId()Uri.withAppendedPath(contentUri, name);uri.getLastPathSegment();

SearchView:

搜索框,监听事件是setOnQuaryTextLisner注册了5年了,今天却是第一次写博文。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: