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

Android开发学习之路 -- 关于BroadcastReceiver

2016-08-02 19:18 381 查看
标准广播:异步发送,同时发送给ABC

有序广播:顺序发送,先发送到A,然后再发送到B,再到C

 

广播注册方式:

1.静态注册:

可以实现开机自动启动应用程序

实现步骤:

1) 新建一个类继承BoardcastReceiver

2) 重写onReceive()

3) 清单中注册实现监听广播:什么监听器接收什么广播

<receiver ...>

<intent-filter>

<action  ...>

4) 权限

 

2.动态注册:

灵活性强

实现步骤:

1) 新建一个类继承BoardcastReceiver

2) 重写onReceive()

3) 代码中注册实现监听广播

  新建IntentFilter对象,添加要监听的action( addAction() )

 新建MyReceiver对象,注册广播( registerBoardcast() )

4) 权限

 

发送自定义广播 sendBoardcast()

发送有序广播 sendOrderedBoardcast()

拦截广播(在前一个广播接收者接收后设置)abortBoardcast()

 

以上讲的发送广播,接收广播全部都是属于系统全局广播,即发送的广播可以被其他任何应用程序接收到,也可以接收到任何来自于其他任何应用程序的广播,容易引起安全性的问题

(广播是可以夹带数据的)

 

使用本地广播:广播只能在用用程序内部进行传递

实现步骤:

1) 新建一个类继承BoardcastReceiver

2) 重写onReceive()

3) 代码中注册

  新建IntentFilter对象,添加要监听的action( addAction() )

  新建MyReceiver对象,注册广播( registerBoardcast() )

  新建LocalBroadcastManager(通过LocalBroadcastManager.getInstance(this)得到实例)

localBroadcastManager = LocalBroadcastManager.getInstance(this)

4)利用localBroadcastManager 发送/接收广播

localBroadcastManager .sendBroadcast(intent);//发送本地广播

localBroadcastManager .registerReceiver(receiver,intentFilter);//注册监听者接收广播

5)权限

 

本地广播是无法通过静态注册方式来接收的,因为要发送本地广播的话该应用程序必须先启动完成才可以发送,而静态注册是用来实现不启动应用程序也可以接收广播的,所以不适合。

 

在广播接收器里面启动活动要添加标志:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

 

 

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息