声明:转载请注明出处:http://blog.csdn.net/Hello_Chillax/article/details/45672601

开题:对android稍微有些了解的朋友都知道,android中有四大组件,分别是:Activity,Service,ContentProvider,BroadcastReceiver。今天来介绍其一:BroadcastReceiver。

BroadcastReceiver:顾名思义,广播接收者,可以接收系统,其他应用等等发送的广播进而做出相应的反应。比如手机电池没电时,用户会受到提示,这就是其应用之一。BroadcastReceiver可以应用于不同程序之间,也可以应用于同一个程序之中,二者基本类似。今天的这个例子是在同一个应用中的。

我们通过一个Demo来讲解BroadcastReceiver的完整使用流程。

一 . 发送无序广播。

1.1 首先我们定义一个接受者:

public class MyReseiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        System.out.println("收到了来自MytReseiver的消息!!");    }}

1.2 然后在清单文件中声明它:

<receiver android:name="com.example.broadcastreseiver.MyReseiver" android:exported="false">            <intent-filter >                <action android:name="com.example.broadcastreseiver.MyReseiver"/>            </intent-filter>        </receiver>

1.3 然后在MainActivity中发送一个广播:

public void send1(View view){        Intent i=new Intent();        i.setAction("com.example.broadcastreseiver.MyReseiver");        sendBroadcast(i);    }

这样,就实现了一个无序广播,当send1()函数被执行时,发送一个消息,这个消息被发送到能接受action为“com.example.broadcastreseiver.MyReseiver”的Receiver。就打印了一句话:

二 . 发送有序广播。

有序广播,顾名思义,就是当一个消息被发送后,其多个接收者按照一定的优先级来接受广播。我们这里模仿大学里发放贫困补助款为例(纯属虚构),来解释这一优先级的效果:

2.1 首先,我们定义多个接收者:

public class Reseiver1 extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        System.out.println("我是省级干部,我收到的消息是:"+getResultData());        setResultData("给贫困生发10万补助款!");    }}
public class Reseiver2 extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        System.out.println("我是市级干部,我收到的消息是:"+getResultData());        setResultData("给贫困生发5万补助款!");    }}
public class Reseiver3 extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        System.out.println("我是学校领导,我收到的消息是:"+getResultData());        setResultData("给贫困生发一件羽绒袄!");    }}
public class Reseiver4 extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        System.out.println("我是贫困学生,我收到的消息是:"+getResultData());    }}

2.2 在清单文件中声明它们:

<receiver android:name="com.example.broadcastreseiver.Reseiver1" android:exported="false">            <intent-filter android:priority="1000">                <action android:name="com.example.broadcastreseiver.Reseiver"/>            </intent-filter>        </receiver>        <receiver android:name="com.example.broadcastreseiver.Reseiver2" android:exported="false">            <intent-filter android:priority="500">                <action android:name="com.example.broadcastreseiver.Reseiver"/>            </intent-filter>        </receiver>        <receiver android:name="com.example.broadcastreseiver.Reseiver3" android:exported="false">            <intent-filter android:priority="100">                <action android:name="com.example.broadcastreseiver.Reseiver"/>            </intent-filter>        </receiver>        <receiver android:name="com.example.broadcastreseiver.Reseiver4" android:exported="false">            <intent-filter android:priority="0">                <action android:name="com.example.broadcastreseiver.Reseiver"/>            </intent-filter>        </receiver>

2.3 在MainActivity中发送一个有序广播:

public void send2(View view){        Intent i=new Intent();        i.setAction("com.example.broadcastreseiver.Reseiver");        /** * 参数解释: * intent:上面定义的intent,没啥好说的; * receiverPermission:对接受者所设定的权限,即接受者必须满足的条件; * resultReceiver:设定一个必须收到消息的对象,谁也无法拦截; * scheduler:一个callback函数,用来接收resultReceiver的回调消息; * initialCode:初始码; * initialData:初始数据; * initialExtras:初始的额外消息; */        sendOrderedBroadcast(i, null, null, null, 0, "给贫困生发20万补助款!", null);    }

当send2()函数被调用时,控制台打印结果为:

到这里就基本结束了,有问题请留言~

更多相关文章

  1. Android(安卓)学习笔记--android――Activity生命周期,server,Br
  2. android 中PendingIntent 和AlarmManager
  3. Android四大组件之~~BroadcastReceiver
  4. Android四大基本组件介绍与生命周期
  5. Android(安卓)notification点击跳转到Activity,点击返回跳转,前一
  6. Android消息机制入门一
  7. Android(安卓)- Navigation
  8. Android—— 4.2 Vold挂载管理_MountService (六)
  9. Android(安卓)之ActivityThead、ActivityManagerService 与activ

随机推荐

  1. 在 Android 中调用二进制可执行程序(nativ
  2. Android中一张图片占用的内存大小
  3. [置顶] android浮动搜索框的使用
  4. 【Android适配问题集锦-音频类】当Androi
  5. Android插件开发初探——基础篇
  6. Android中Textview和图片同行显示(文字超
  7. 【Android】说做就做:带图标的list item
  8. 侧边栏(使用Support Library 4提供的扩展
  9. 旅行的青蛙Unity游戏逆向修改Android&iOS
  10. 如何成功在android设备上连接pc端共享的