1、Broadcast receiver概述
broadcast receiver 是一个用来响应系统范围内的广播的组件。 很多广播发自于系统本身。—例如, 通知屏幕已经被关闭、电池低电量、照片被拍下的广播。 应用程序也可以发起广播。—例如, 通知其它程序,一些数据被下载到了设备,且可供它们使用。 虽然广播并不提供用户交互界面,它们也可以创建一个状态栏通知 来提醒用户一个广播事件发生了。尽管如此,更多的情形是,一个广播只是进入其它组件的一个“门路”,并试图做一些少量的工作。 例如,它可能发起一个服务,并通过服务执行与这个广播事件相关的工作。
broadcast receiver是BroadcastReceiver 的子类实现,而且每一个广播通过Intent 对象来传递。 更多信息,请阅读 BroadcastReceiver 类。
2、源码:
服务端:
public static final String XXX_BROADCAST = "com.XXX.XXXProvider.XXX_BROADCAST";
public void onBroadcast() {
// TODO implement here
//使用静态的方式注册广播,可以使用显示意图进行发送广播
Intent broadcast = new Intent(XXX_BROADCAST);
broadcast.putExtra("Info", "广播内容");
sendBroadcast(broadcast, null);
}
客户端:
protected ProviderBroadcastReceiver receiver;
public static final String PEOPLEINFO_BROADCAST = "com.xxx.XXXInfoProvider" +
".PEOPLEINFO_BROADCAST";
/**
* 注册广播
*/
private void registerBroadcast() {
IntentFilter counterActionFilter = new IntentFilter(XXX_BROADCAST);
receiver = new ProviderBroadcastReceiver();
logger.debug(TAG_PROVIDER + "注册广播!");
getContext().registerReceiver(receiver, counterActionFilter);
}
/**
* 注销广播
*/
public void unregisterBroadcast() {
logger.debug(TAG_PROVIDER + "解绑广播!");
getContext().unregisterReceiver(receiver);
}
/**
* 广播接收端
*/
public class ProviderBroadcastReceiver extends BroadcastReceiver {
String info = null;
@Override
public void onReceive(Context context, Intent intent) {
info= intent.getExtras().getString("Info"); logger.debug(TAG_PROVIDER + "广播接收内容:" + info); // 推送信息
callBack.onCardDetected(info);
}
}
// 推送信息
callBack.onCardDetected(peopleInfo);
}
}
AndroidManifest.xml文件:
<application android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
>
<receiver
android:name=".xxxProvider$ProviderBroadcastReceiver">
<intent-filter>
<action android:name="com.xxx.xxxinfoprovider"/>
</intent-filter>
</receiver>
</application>
推荐文章:
本文详细介绍了Android中的BroadcastReceiver组件,包括其用途、工作原理及如何实现广播的发送和接收。展示了服务端广播的发送方式及客户端如何注册和注销广播接收器。
668

被折叠的 条评论
为什么被折叠?



