文章目录
- 1. 广播的概念
- 2. 广播的基本组成
- 2.1 广播发送器
- 2.2 广播接收器
- 3. 广播注册
- 3.1 动态注册
- 3.2 静态注册
1. 广播的概念
BroadcastReceiver,广播接收器,是Android四大组件之一,可用来跨进程通信的一种机制。当然,也可以用于进程内的组件间通信。
2. 广播的基本组成
2.1 广播发送器
与其他四大组件(Activity、Service)一样,也是使用Intent发送广播。
- 通过设置Action,标识该广播可被哪些接收器收到。
- 可通过putExtra传递额外的bundle信息。
// 创建Intent
Intent intentResult = new Intent();
intentResult.setAction("my_broadcaster_action");
intentResult.putExtra(KEY_RESULT, filePath);
// 发送广播
sendBroadcast(intentResult);
2.2 广播接收器
使用BroadcastReceiver类,继承或者直接new该类的对象实例,重写方法 onReceive ,在该方法中处理收到的广播消息。
注意,该方法中不要做耗时操作,否则会ANR异常(最长10秒)。
如果非要做耗时操作,通常是启动Service,在该Service中使用子线程或者直接启动一个IntentService来执行。
private BroadcastReceiver mReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {// 收到广播消息}};
3. 广播注册
创建完广播接收器后,最后还需要将其注册,这样它才能接收广播。
主要是为其配置Action,表示它能接收的广播特征,从而过滤到适合它的广播信息。
注册的方式分为静态注册和动态注册。
3.1 动态注册
在Activity中注册广播接收器:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("my_broadcaster_action");
registerReceiver(mBroadcastReceiver, intentFilter);
动态注册不要忘记解除注册,一般是在Activity的onDestroy中:
@Override
protected void onDestroy() {super.onDestroy();unregisterReceiver(receiver);
}
3.2 静态注册
在Manifest文件中注册广播接收器:
<receiver android:name=".receiver.MyBroadcastReceiver"><intent-filter><action android:name="my_broadcaster_action" /></intent-filter>
</receiver>
.receiver.MyBroadcastReceiver
是MyBroadcastReceiver类的包名全路径的缩写,这里替换成你自己的全路径类名。比如你的包名是:com.example.broadcasttest
,这里应该写com.example.broadcasttest.MyBroadcastReceiver
本文就是对Android中的广播进行了基本的介绍,旨在让大家对广播有初步的认识。
后续我们将会详细了解静态广播与动态广播、有序广播与无序广播、本地广播与全局广播。