zoukankan      html  css  js  c++  java
  • Android四大核心组件之BroadCastReceiver

    实验内容

    • 实现BroadCast发送和接受
    • 通过BroadCast传递信息
    • 动态注册和注销BroadCast

    实验要求

    • 实现BroadCast发送和接受
    • 通过BroadCast传递信息
    • 动态注册和注销BroadCast

    实验步骤

    • BroadCast Receiver概述:
      用于组件和组件之间的通信,既可以在同一应用内,也可以跨应用。监听操作系统广播的事件等。广播是一种订阅--通知 事件,广播接收者向Android系统 register (订阅广播),广播发送者向Adnroid系统 sendBroadCast(发送广播),然后Android 系统通知所有注册该广播的接收者,广播接收者收到自己注册的广播之后实现自己想做的事情(该事情一般不超过10s,否则应用会出现ANR)。
    • BroadCast的分类:
      1.无序广播:也就是普通广播,只要注册了该action的广播接收者都能收到该广播,且没有先后顺序。
      2.有序广播:广播接收者按照优先级高低依次接受该广播,并且优先接收的广播可以通过setResultExtras(Bundle)方法,将处理好的结果传送到下一个广播接收者那里。
      3.粘性广播:发送广播调用的方法 sendStickyBroadcast(Intent),和sendBroadcast(Intent)不同。 粘性广播会一直保留在内存当中,直到有广播接收者注册该广播,该广播才算结束。
    • BroadCast Receiver实现
      1、首先新建一个工程,命名为BroadCast_Test
      2、在包名下新建一个类Receiver,并让其继承自BroadcastReceiver,如下图

    图1
    3、把广播接收器注册到,如下

    图2
    4、修改activity_main.xml文件,为其添加一个按钮,来触发响应事件,根据下面补全代码

    图3
    5、在MainActivity.java中添加相应的响应函数,如下

    图4
    6、运行程序后,可以看到如下效果

    图5
    点击按钮后我们再看Logcat的打印信息如下

    图6
    表明BroadCast成功的接收到了广播消息。

    • 通过Intent传送附加信息
      1、修改MainActivity.java,如下

    图7
    2、修改Receiver.java的内容,让其接收到消息并取出显示,如下

    图8
    3、再次运行程序,结果如下

    图9
    点击按钮后,再次查看Logcat信息如下

    图10
    成功接收消息并取出显示。

    • 动态注册和注销BroadCast
      1、修改AndroidManifest.xml文件,将之前的注册信息删除掉,选中代码后按下Ctrl+/ ,如下

    图11
    2、在activity_main.xml新增两个按钮来实现注册和注销Broadcast,如下所示

    图12
    3、在MainActivity.java为按钮添加相应代码

    图13
    其中第三部分为生成一个Receiver实例,接下来要用到。
    4、为Broadcast指定一个地址,将Receiver注册到该地址上,一旦有应用程序往这个地址发送信息或广播,Receiver就可以侦听到,在Receiver.java添加代码如下

    图14
    5、接下来继续完善按钮事件监听方法,在MainActivity.java按下面修改代码

    图15
    6、再次rebuild然后运行如下

    图16
    首先点击发送按钮,查看Logcat并没有任何信息
    然后点击注册按钮,然后再点击发送按钮,查看Logcat如下

    图17
    可以看到Receiver成功接收到了信息
    再点击注销按钮,然后点击发送按钮,查看Logcat,并没有发现任何信息。
    到这里就是关于Broadcast的基本使用。

  • 相关阅读:
    【转】最奇特的编程语言特征
    【原】mysql 视图
    自己动手写ORM框架(一):目标效果预览
    (二)Javascript面向对象:命名空间
    在JAVA中封装JSONUtils工具类及使用(一)
    .NET3.5中JSON用法以及封装JsonUtils工具类(二)
    (四)Javascript面向对象:继承
    自己动手写ORM框架(三):关系映射配置—Table属性
    (一)javascript面向对象:(2)类
    自己动手写ORM框架(二):AdoHelper支持多数据库操作的封装(1)
  • 原文地址:https://www.cnblogs.com/liming1593/p/5427914.html
Copyright © 2011-2022 走看看