组件二:Broadcast Receiver

1 android广播机制:android中每个应用程序都可以对自己感兴趣的广播进行注册,使得只收到自己感兴趣的广播内容。

发送:即intent

接收:广播接收器

2 类型

标准广播:广播发出后所有的广播接收器在同一时间收到广播消息

有序广播:广播发出后同一时间只能有一个广播接收器收到广播,然后依次传递。

3  接收系统广播

系统广播指的是android系统自身发出的广播,可以在应用程序中写好监听这些广播的广播接收器来接收

(1)注册方法

动态注册:必须启动程序后才能接收广播

a 编写广播接收器的子类,在子类中重写onReceive方法,以处理当接收到所监听的系统广播时所应采取的方法;

b实现一个intentfilter,并指定所要监听的系统广播,然后使用registerReceiver注册

intentFilter=new IntentFilter();

intentFilter.addAction("广播类型编号");

registerReceiver(networkChangerReceiver,intentFilter);//传入的包括第一步编写的内部类的实例和intentFilter

c 取消注册:在onDestory中使用unregisterReceiver()取消注册。

静态注册:

a  编写外部类实现广播接收器

b 在AndroidManifest.xml文件中将广播接收器的类名注册。

     

             

     

4 发送自定义广播

(1)发送标准广播

a 先写好接收自定义广播的广播接收器:方法可以使用上述的静态方法或动态方法,注意此时广播类型编码应和后边发送时添加的类型编码一致

b 使用intent发送自定义广播

Intent intent=new Intent("com.example.broadcasttest.MY_BROADCAST");//此处的广播类型应与接收器的类型一致

sendBroadcast(intent);

(2)发送有序广播

在多个进程间传送广播,即A进程发送的广播可以让B进程的广播接收器接收到。

较之于标准广播,只需要改一处地方

sendOrderedBroadcast(intent,null);

可以针对不同进程(程序)的广播接收器在进行注册的时候增加优先级,这样每个程序收到的顺序就不一样。

5 使用本地广播

发出的广播只能够在应用程序内部进行传递,并且广播接收器也只能接收来自本应用程序发出的广播。

本地广播发送器

private LocalBroadcastManger localBroadcastManager;

localBroadcastManager=LocalBroadcastManager.getInstance(this);

本地广播接收器

private LocalReceiver localReceiver;

localBroadcastManager.registerReceiver(localReceiver,intentFilter);

你可能感兴趣的:(组件二:Broadcast Receiver)