广告
返回顶部
首页 > 资讯 > 移动开发 >Android基础知识之broadcast广播详解
  • 183
分享到

Android基础知识之broadcast广播详解

Android 2022-06-06 08:06:54 183人浏览 安东尼
摘要

Android中的广播用的太多了,今天稍微总结一下。 按注册方式分为两种: 1.静态注册广播: 静态注册广播就是在androidManifest.xml文件中注册广播,假设

Android中的广播用的太多了,今天稍微总结一下。
按注册方式分为两种:

1.静态注册广播:
静态注册广播就是在androidManifest.xml文件中注册广播,假设我们要实现这样一个效果,在一个activity上点击按钮,发送一条广播,这条广播弹出一个toast,显示“静态”二字。

先看看广播接受者:


public class MyBroadcast extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    Toast.makeText(context,"静态", Toast.LENGTH_LONG).show();
  }
}

清单文件中注册:


  <receiver android:name="com.example.staticbroadcast.MyBroadcast" >
      <intent-filter>
        <action android:name="com.test.StaticBroadcast" />
      </intent-filter>
    </receiver>

activity中的点击事件(发送广播):


 this.static_btn.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction("com.test.StaticBroadcast");
        sendBroadcast(intent);
      }
    });

2.动态注册:
动态注册一般是在activity中的onStart()方法中注册,在onStop()方法中解除注册,代码如下:


public class MainActivity extends Activity {
  private Button static_btn;
  private Button dynamic_btn;
  private BroadcastReceiver myBroadcastReceiver;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.static_btn = (Button) this.findViewById(R.id.button1);
    this.dynamic_btn = (Button) this.findViewById(R.id.Button01);
    myBroadcastReceiver = new BroadcastReceiver(){
      @Override
      public void onReceive(Context context, Intent intent) {
        Toast.makeText(MainActivity.this,"你好,这里是动态广播!", Toast.LENGTH_LONG).show();
      }
    };
//   this.static_btn.setOnClickListener(new OnClickListener() {
//
//     @Override
//     public void onClick(View v) {
//       Intent intent = new Intent();
//       intent.setAction("com.test.StaticBroadcast");
//       sendBroadcast(intent);
//     }
//   });
    this.dynamic_btn.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        //发送广播
        Intent intent = new Intent();
        intent.setAction("DynamicBroadcast");
        sendBroadcast(intent);
      }
    });
  }
  @Override
  protected void onStart() {
    super.onStart();
    //注册广播
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("DynamicBroadcast");
    reGISterReceiver(myBroadcastReceiver, intentFilter);
  }
  @Override
  protected void onStop() {
    super.onStop();
    //取消注册
    unregisterReceiver(myBroadcastReceiver);
  }
}

关于静态注册的细节:
android:exported=”true”这个属性表示该广播接收器是否接收来自其他App发出的广播,如果有intent-filter属性,则默认为true,否则默认为false。

每个广播接收者都可以接受多个广播源,如果是静态注册,那么你要这么做:


  <receiver 
      android:exported="true"
      android:name="com.example.staticbroadcast.MyBroadcast" >
      <intent-filter>
        <action android:name="com.test.StaticBroadcast" />
        <action android:name="com.test.StaticBroadcast2"/>
      </intent-filter>
    </receiver>

在广播接收器中这样处理:


  @Override
  public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals("com.test.StaticBroadcast")) {
      Toast.makeText(context, "静态", Toast.LENGTH_SHORT).show();
    } else if (intent.getAction().equals("com.test.StaticBroadcast2")) {
      Toast.makeText(context, "静态2", Toast.LENGTH_SHORT).show();
    }
  }

如果是动态注册,注册方式如下:


  @Override
  protected void onStart() {
    super.onStart();
    //注册广播
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("DynamicBroadcast");
    intentFilter.addAction("DynamicBroadcast2");
    registerReceiver(myBroadcastReceiver, intentFilter);
  }

广播接收器中的处理方式与静态注册一致。

关于怎样使用broadcast实现activity和fragment之间的通信可以查看我的另一篇博客使用Broadcast实现android组件之间的通信

原文地址:Http://blog.csdn.net/u012702547/article/details/46955787

您可能感兴趣的文章:Android中BroadcastReceiver(异步接收广播Intent)的使用Android提高之BroadcastReceiver实例详解深入Android中BroadcastReceiver的两种注册方式(静态和动态)详解Android编程四大组件之BroadcastReceiver(广播接收者)用法实例Android中的广播(BroadCast)详细介绍Android查看电池电量的方法(基于BroadcastReceiver)Android使用广播(BroadCast)实现强制下线的方法Android实现Activity、Service与Broadcaster三大组件之间互相调用的方法详解Android开发之BroadcastReceiver用法实例分析Android学习之Broadcast的简单使用


--结束END--

本文标题: Android基础知识之broadcast广播详解

本文链接: https://www.lsjlt.com/news/24857.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android基础知识之broadcast广播详解
    Android中的广播用的太多了,今天稍微总结一下。 按注册方式分为两种: 1.静态注册广播: 静态注册广播就是在androidManifest.xml文件中注册广播,假设...
    99+
    2022-06-06
    Android
  • Android四大组件之broadcast广播详解
    目录基础广播两大类广播广播的动态和静态注册监听时间变化监听系统启动案例创建 receiver设置权限发送自定义广播如何发送与接收有序广播基础广播 两大类广播 标准广播:异步执行,广播...
    99+
    2022-11-13
  • 详解Android广播Broadcast的启动流程
    Android中的广播是一种用于应用程序之间通信的机制。它允许应用程序发送和接收系统级或应用程序级的广播消息。当一个广播被发送时,系...
    99+
    2023-08-11
    Android
  • Android RecyclerView 基础知识详解
    本周的谷歌I/O大会带来了很多关于Android的振奋人心的消息。可能我们需要较长的时间来消化Android L引入的新东西。 这些天我一直在研究RecyclerView,并想...
    99+
    2022-06-06
    recyclerview Android
  • Android四大组件之broadcast广播使用讲解
    目录一、广播机制概述二、广播接收者1、广播接收者的创建2、广播接收者的注册三、广播的类型1、无序广播2、有序广播一、广播机制概述 通常情况下在学校的每个教室都会装有一个喇叭,这些喇叭...
    99+
    2022-12-26
    Android broadcast Android broadcast广播组件
  • Android 基础知识之 VelocityTracker使用
    VelocityTracker是Android中用于追踪触摸事件速度的工具。它可以用于计算触摸事件的速度和加速度,从而用于实现一些手...
    99+
    2023-09-14
    Android
  • Python基础知识之变量的详解
    目录一.定义二.命名方法2.1小驼峰命名法2.2大驼峰命名法2.3下划线命名法三.命名规则3.1标识符3.2关键字四.使用方法4.1单变量赋值:4.2底层逻辑:4.3总结:5.变量进...
    99+
    2022-11-12
  • Android 零基础到精通之广播机制
    目录广播机制简介接收系统广播1. 动态注册监听时间变化2. 静态注册实现开机启动发送自定义广播1. 发送标准广播2. 发送有序广播广播机制简介 Android 中的广播主要分为两种类...
    99+
    2022-11-12
  • ADO.NET基础知识详解
    ADO.NET是微软提供的一种数据库访问技术。 ADO.NET为不同类型的数据源提供了不同的数据提供程序对象: 数据提供程序说明SQL Server 数据提供程序提供对Microso...
    99+
    2022-11-13
  • 详解Zookeeper基础知识
    目录1. 简介2. 数据模型2.1 模型结构2.2 模型的特点2.3 节点分类2.3.1 Persistent2.3.2 Persistent Sequential2.3.3 Eph...
    99+
    2022-11-12
  • Javascript基础知识详解
    目录变量数据类型扩展点总结变量 基本语法 var age=10;//声明一个名称为age的变量,并且为它赋值,称为变量的初始化 var是一个JS关键字,用来声明...
    99+
    2022-11-12
  • Docker基础知识之Linux namespace图文详解
    前言 docker 是“新瓶装旧酒”的产物,依赖于 linux 内核技术 chroot 、namespace 和 cgroup。本篇先来看 namespace 技术。 Docker 和虚拟机技术一样,从操作系统级上实现了...
    99+
    2022-06-04
    docker namespace linux namespace 好处 linux namespace技术
  • C语言入门之基础知识详解
    目录一、思维导图二、环境搭建三、编码规范四、基本数据类型五、分支循环5.1 分支5.2 循环六、break与continue6.1 无限循环一、思维导图 内容不限于此思维导图 二、...
    99+
    2022-11-12
  • Android基础知识之单点触摸
    相对于多点触摸,单点触摸还是很简单的。 新建一个工程,先看看布局文件: <RelativeLayout xmlns:android="http://schemas.a...
    99+
    2022-06-06
    Android
  • linux基础知识-vmstat详解
    1. 前言 vmstat(VirtualMeomoryStatistics,虚拟内存统计)是一个不错的Linux/Unix监控工具,在性能测试中除了top外也是比较常用的工具之一,它可以监控操作系统的...
    99+
    2023-09-24
    linux 运维 服务器
  • linux基础知识-sar详解
    1.前言 sar(System Activity Reporter系统活动情况报告)是目前Linux比较全的系统性能分析工具之一,可以从多方面对系统的活动进行报告 ,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用...
    99+
    2023-08-19
    linux 服务器 运维
  • Android 基础知识4-3.2 EditText(输入框)详解
    一、EditText(输入框)介绍         EditText在开发中也是经常使用的控件,比如,要实现一个登录页面,需要用户输入账号、密码等信息,然后我们或得用户输入的内容,把它交给服务器来判断。因此,这一节我们需要学习如何在布局文件...
    99+
    2023-09-29
    android android studio 学习
  • Android 基础知识4-3.8 SeekBar(拖动条)详解
    一、简介          拖动条类似进度条,不同的是用户可以控制,比如,应用程序中用户可以对音效进行控制,这就可以使用拖动条来实现。由于拖动条可以被用户控制,所以需要对其进行事件监听,这就需要实现SeekBar.onSeekBarCha...
    99+
    2023-09-05
    android studio android 学习
  • Android 基础知识4-3.7 ProgressBar(进度条)详解
    一、简介         ProgressBar(进度条)是UI界面中一种非常实用的组件,通常用于向用户像是某个耗时操作完成的百分比。进度条可动态地显示进度,因此避免长时间地执行某个操作时,让用户感觉程序失去了响应,从而更好地提高用户界面的...
    99+
    2023-09-14
    android studio android 学习
  • JavaSwing基础之Layout布局相关知识详解
    目录一、View layout方法二、ViewGroup layout方法三、自定义垂直布局VerticalLayout四、效果展示一、View layout方法 首先,还是从Vie...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作