Android 内容提供者、内容观察者(第二十一 二十二节课)

Android 内容提供者、内容观察者(第二十一 二十二节课),第1张

概述第二十一节课·内容提供者简介·内容提供者(ContentProvider)是Android系统四大组件之一,用于保存和检索数据,是Android系统中不同应用程序之间共享数据的接口。.ContentProvider是不同应用程序之间进行数据交换的标准API,以Uri形式对外提供数据,允许其他应用 *** 作本应用数据。 第二十一节课

·内容提供者简介
·内容提供者(ContentProvIDer)是AndroID系统四大组件之一,用于保存和检索数据,是AndroID系统中不同应用程序之间共享数据的接口。.ContentProvIDer是不同应用程序之间进行数据交换的标准API,以Uri形式对外提供数据,允许其他应用 *** 作本应用数据。其他应用则使用ContentResolver,并根据ContentProvIDer提供的Uri *** 作指定数据。


创建一个内容提供者
一定义一个类继承androID.content包下的ContentProvIDer类(抽象类)。子
类需要重写它的onCreate()、delete()、getType()、insert()、query()、update()这几个抽象方法。

ContentProvIDer是四大组件之一,必须要在清单文件中注册


. Uri简介
ContentProvIDer的几个抽象方法,这几个抽象方法中有一个参数Uri,它代表了数据的 *** 作方法。Uri是由scheme、authorites、path三部分组成。


ContentResolver的基本用法
·在AndroID系统中,ContentResolver充当着桥梁的角色。应用程序通过ContentProvIDer暴露自己的数据,通过ContentResolver对应用程序暴露的数据进行 *** 作。
·通过ContentResovler对象实现数据的 *** 作代码如下:
Uri uri= Uri.parse(“contentlicn.itcast.db.personprovIDer/person”);ContentResolver resolver = context.getContentResolver0;
Cursor cursor = resolver.query(uri, new Stringl] f “address”, “date” “tyvpe” “body” };, null, null, null ;while (cursor.movetoNext(y){
String address = cursor.getString(O);
……
)
cursor.close():

.使用步骤创建内容提供者:
内容提俱者:
1.创建自定义类继承父类ContentProvIDer
2.重写抽象父类的方法
3.构建Uri解析器
4.添加构建访问uri。数据增刮改者:API
5.注册内容提供者

cprovIDerandroID:authoritIEs=""com.provIDer"androID:name=""com.imau.provIDer.MyProvIDer"androID:exported="true"</provIDer>

2。内容访问者:
*1.获取提供者:getcontentReso1verO; contentReso1ver对象2.访向内容提供者:增剧改查

contentResolver resolver= getcontentResolvero;uri uri=uri.parse("content://com.provIDer111/query"");cursor cursor= resolver.query(uri,nu11,nu11 ,nu11,nu11);if(cursor!=nu118ecursor.getcount(>0){while (cursor.movetoNextOi1ong _ID=cursor.getInt(O);string sname=cursor.getstring(1);string sno=cursor.getstring(2);string sex=cursor.getstring(3);int img=cursor.getInt(4);Student student=new student(_ID,sname ,sno ,sex ,img);System.out.println(student);)

3.内容观察者使用

1.注册内容观察者uri uri2=uri.parse(""content://com.provIDer/delete"");//注册层内容观察者reso1ver.registercontentobserver(uri2,true,new contentobserver(new Hand7er()){//监听内容提供者数据发生改变public voID onchange (boolean selfchange){super.onchange(se1fchange);system.out.println(C”"致据发生改变........"";}};

2.在内容提供者添加通知内容观察者代码insert. update . delete方法中;

uri uri2=Uri.parse(""content: / /com.provIDer/insert");getcontext.getcontentResolver ().notifychange(uri2 ,nu11);

内容观察者
·内容观察者(ContentObserver)是用来观察指定uri所代表的数据。当ContentObserver观察到指定Uri代表的数据发生变化时,就会触发ContentObserver的onChange()方法。此时在onChange()方法里使用ContentResovler可以查询到变化的数据。
从图可以看出,使用ContentObserver观察A应用的数据时,首先要在A应用的ContentProvIDer中调用ContentResolver的notifyChange()方法。调用了这个方法之后当数据发生变化时,它就会向“消息中心”发送数据变化的消息。然后C应用观察到“消息中心”有数据变化时,就会触发
ContentObserver的onChange()方法。


理解广播与广播接收器
1.广播事件处理属于系统级的事件处理(一般事件处理是属于VIEw级的事件
处理)
2.一个应用可以在发生特定事件时发送broadcas),系统中任何应用只要注册,了对应的Receiver就会接收到此broadcast
3.一个应用如果对某个广播感兴趣,就可以注册对应KReceiver来接收广播
4.广播事件机制是应用程序(进程间)之间通信的一种手段
5.广播机制最大的特点就是发送方并不关心接收方是否接到数据,也不关心
接收方是如何处理数据的,通过这种形式来达到接、收双方的完全解耦
6.广播事件处理过程即针对某一广播做出响应的过程
5.广播机制最大的特点就是发送方并不关心接收方是否接到数据,也不关心
接收方是如何处理数据的,通过这种形式来达到接、收双方的完全解耦
6.广播事件处理过程即针对某一广播做出响应的过程


.AndroID系统中,内置了很多系统级别的广播,例如手机开机完成后会发送一条广播,电池电量不足时会发送一条广播等。
AndroID系统中提供了广播接收者broadcastReceiver,广播接收者的作用就是接收来自系统或其他应用程序的广播,并作出回应。
广播(broadcast)是一种运用在应用程序之间传递消息的执制。
广播接收者(broadcastReceiver)是用来过滤、接收并响应广播的一类组件。
广播接收者可以监听系统中的广播消息,在不同组件之间进行通信。
广播接收者创建与注册
·要使用广播接收者接收其他应用程序发出的广播,先要在本应用中创建广播接收者并进行注册。
1、创建广播接收者
public class MybroadcastReceiver extends broadcastReceiver {
@overrIDe
public voID onReceive(Context context, Intent intent) {
.……a.aaa"
}
}

·注册广播有两种方式,常驻型广播与非常驻型广播。
2、注册非常驻型广播
非常驻型广播依赖于注册广播的组件的生命周期.例如,在Activity中注册广播接收者,当Activity销毁后广播也随之被移除。这种广播事件在代码中注册。
MybroadcastReceiver receiver = new MybroadCastReceiver();
String action = “androID.provIDer.Telephony.SMs_RECEIVED”";
lntentFilter intentFilter = new lintentFilter(action);
registerReceiver(receiver, intentFilter);
非常驻型广播可以在onDestory()方法中解除广播,具体代码如下:unregisterReceiver(receiver);

总结

以上是内存溢出为你收集整理的Android 内容提供者、内容观察者(第二十一 二十二节课)全部内容,希望文章能够帮你解决Android 内容提供者、内容观察者(第二十一 二十二节课)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1042755.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存