3.内容观察者使用
1.注册内容观察者
Uri uri2=Uri.parse(“content://com.provider/delete”); //注册层内容观察者 resolver.registerContentObserver(uri2, true, new ContentObserver(new Handler()) { //监听内容提供者数据发生改变 public void onChange(boolean selfChange) { super.onChange(selfChange); System.out.println(“数据发生改变…”); } });
2.在内容提供者添加通知内容观察者代码
insert、update 、delete 方法中;
Uri uri2=Uri.parse(“content://com.provider/insert”); getContext().getContentResolver().notifyChange(uri2,null);
第7章 广播接收者
理解广播与广播接收器
广播事件处理属于系统级的事件处理(一般事件处理是属于View级的事件处理)
一个应用可以在发生特定事件时发送Broadcast, 系统中任何应用只要注册了对应的Receiver就会接收到此Broadcast
一个应用如果对某个广播感兴趣, 就可以注册对应的Receiver来接收广播
广播事件机制是应用程序(进程间)之间通信的一种手段
广播机制最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的,通过这种形式来达到接、收双方的完全解耦
广播事件处理过程即针对某一广播做出响应的过程
什么是广播接收者
Android系统中,内置了很多系统级别的广播,例如手机开机完成后会发送一条广播,电池电量不足时会发送一条广播等。
Android系统中提供了广播接收者BroadcastReceiver,广播接收者的作用就是接收来自系统或其他应用程序的广播,并作出回应。
广播接收者创建与注册
要使用广播接收者接收其他应用程序发出的广播,先要在本应用中创建广播接收者并进行注册。
1、创建广播接收者
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
………
}
}
注册广播有两种方式,常驻型广播与非常驻型广播。
1、注册常驻型广播
常驻型广播是当应用程序关闭后,如果接收到其他应用程序发出的广播,那么该程序会自动重新启动。常驻型广播在清单文件中注册。
<receiver android:name="cn.itcast.MyBroadcastReceiver"> <intent-filter android:priority="20">
2、注册非常驻型广播
非常驻型广播依赖于注册广播的组件的生命周期,例如,在Activity中注册广播接收者,当Activity销毁后广播也随之被移除。这种广播事件在代码中注册。
MyBroadCastReceiver receiver = new MyBroadCastReceiver(); Stringaction=“android.provider.Telephony.SMS_RECEIVED”;
IntentFilter intentFilter = new IntentFilter(action);
registerReceiver(receiver, intentFilter);
非常驻型广播可以在onDestory()方法中解除广播,具体代码如下:
unregisterReceiver(receiver);