Android四大组件之Broadcast receiver

1、Broadcast receiver概述

broadcast receiver 是一个用来响应系统范围内的广播的组件。 很多广播发自于系统本身。—例如, 通知屏幕已经被关闭、电池低电量、照片被拍下的广播。 应用程序也可以发起广播。—例如, 通知其它程序,一些数据被下载到了设备,且可供它们使用。 虽然广播并不提供用户交互界面,它们也可以创建一个状态栏通知 来提醒用户一个广播事件发生了。尽管如此,更多的情形是,一个广播只是进入其它组件的一个“门路”,并试图做一些少量的工作。 例如,它可能发起一个服务,并通过服务执行与这个广播事件相关的工作。

broadcast receiver是BroadcastReceiver 的子类实现,而且每一个广播通过Intent 对象来传递。 更多信息,请阅读 BroadcastReceiver 类。

来源:http://www.android-doc.com/guide/components/fundamentals.html

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入门:广播发送者与广播接收者


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值