Android四大组件之Broadcast receiver

来源:互联网 发布:网页数据分析工具 编辑:程序博客网 时间:2024/06/05 20:14

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


原创粉丝点击