1.标准广播(无序广播)

public class StandardReceiver extends BroadcastReceiver {public static final String STANDARD_ACTION = "com.qidian.chapter07.standard";// 一旦接受到标准广播,马上触发接收器的onReceive方法@Overridepublic void onReceive(Context context, Intent intent) {if (intent != null && intent.getAction().equals(STANDARD_ACTION)) {Log.d("guo", "onReceive: 收到一个标准广播");}}
}
public class BroadStandardActivity extends AppCompatActivity implements View.OnClickListener {private StandardReceiver standardReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_broad_standard);findViewById(R.id.btn_send_standard).setOnClickListener(this);}@Overridepublic void onClick(View v) {// 发送标准广播Intent intent = new Intent(StandardReceiver.STANDARD_ACTION);sendBroadcast(intent);}@Overrideprotected void onStart() {super.onStart();standardReceiver = new StandardReceiver();// 创建过滤器,只处理STANDARD_ACTION的广播IntentFilter filter = new IntentFilter(StandardReceiver.STANDARD_ACTION);// 注册接收器,注册之后才能正常接收广播registerReceiver(standardReceiver,filter);}@Overrideprotected void onStop() {super.onStop();// 注销接收器,注销后就不再接受广播unregisterReceiver(standardReceiver);}
}

2.有序广播

一个广播存在多个接收器,需要排队接受广播,意味着广播是条有序广播。

多个接收器处理有序广播的顺序规则为:

  • 1、优先级越大的接收器,越早收到有序广播
  • 2、优先级相同的时候,越早注册的接收器越早收到广播
@Overridepublic void onClick(View v) {// 创作一个指定动作的意图Intent intent = new Intent(ORDER_ACTION);sendOrderedBroadcast(intent,null);}@Overrideprotected void onStart() {super.onStart();// 多个接收器处理有序广播的顺序规则为:// 1、优先级越大的接收器,越早收到有序广播// 2、优先级相同的时候,越早注册的接收器越早收到广播orderAReceiver = new OrderAReceiver();IntentFilter filterA = new IntentFilter(ORDER_ACTION);filterA.setPriority(8);registerReceiver(orderAReceiver,filterA);orderBReceiver = new OrderBReceiver();IntentFilter filterB = new IntentFilter(ORDER_ACTION);filterB.setPriority(8);registerReceiver(orderBReceiver,filterB);}@Overrideprotected void onStop() {super.onStop();unregisterReceiver(orderAReceiver);unregisterReceiver(orderBReceiver);}

3.静态注册广播

 @Overridepublic void onClick(View v) {// 安卓8.0之后删除了大部分静态注册,防止退出APP后仍在接受广播// 为了让应用能够继续接受静态广播,需要给静态注册的广播指定包名String fullName = "com.qidian.chapter07.receiver.ShockReceiver";Intent intent = new Intent(ShockReceiver.SHOCK_ACTION);// 发送静态广播时需要通过setComponent指定接收器的完整路径ComponentName componentName = new ComponentName(this,fullName);// 设置意图的组件信息intent.setComponent(componentName);sendBroadcast(intent);}
package com.qidian.chapter07.receiver;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Vibrator;
import android.util.Log;public class ShockReceiver extends BroadcastReceiver {public static final String SHOCK_ACTION = "com.qidian.chapter07.shock";@Overridepublic void onReceive(Context context, Intent intent) {if (intent != null && intent.getAction().equals(SHOCK_ACTION)) {Log.d("guo", "onReceive: 接收器收到一个震动广播");// 从系统服务中获取震动管理器Vibrator vb = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);vb.vibrate(500);}}
}

4.系统分钟到达广播

 @Overrideprotected void onStart() {super.onStart();// 创建一个分钟变更的广播接收器timeReceiver = new TimeReceiver();IntentFilter filter = new IntentFilter(Intent.ACTION_TIME_TICK);registerReceiver(timeReceiver,filter);}@Overrideprotected void onStop() {super.onStop();unregisterReceiver(timeReceiver);}

5.系统网络变更广播

package com.qidian.chapter07.receiver;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.NetworkInfo;
import android.util.Log;public class NetworkReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (intent != null) {NetworkInfo networkInfo = intent.getParcelableExtra("networkInfo");// networkInfo.getTypeName()String text = String.format("收到一个网络变更广播,网络大类为%s," + "网络小类为%s,"+ "网络状态为%s",networkInfo.getTypeName(),networkInfo.getSubtypeName(),networkInfo.getState().toString());Log.d("guo", text);}}
}
 @Overrideprotected void onStart() {super.onStart();networkReceiver = new NetworkReceiver();IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");registerReceiver(networkReceiver,filter);}@Overrideprotected void onStop() {super.onStop();unregisterReceiver(networkReceiver);}

Broadcast 广播-(18)相关推荐

  1. Broadcast广播-Android

    一.Broadcast 1.定义 在 Android 中,Broadcast 是一种在应用程序之间传输信息的机制,要发送的广播内容是一个 Intent,这个 Intent 中可以携带我们要传送的数据. ...

  2. Upd通信之QUdpSocket的unicast单播、broadcast广播、multicast组播

    简 述: 了解Upd通信之QUdpSocket的unicast单播.broadcast广播.multicast组播,书写一个简单地例子:然后写了一个小的Qt例子,用来实现和验证它的空间的一些属性和功能 ...

  3. 【Android入门】5、Broadcast 广播、Kotlin 的高阶函数、泛型、委托

    六.BroadCast 广播 广播用于在Android系统内实现通知,概念较为简单 为了实现上述效果, 代码如下 基础类如下, 定义了receiver, 当收到消息时, 触发receiver逻辑(弹窗 ...

  4. 张萌韩墨羽——BroadCast 广播

    BroadCast 广播 广播作用以及机制 其实BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段, 系统自己在很多时候都会发送广播,比如电量低或者充足,刚启动完,插入耳机 ...

  5. Android Studio 单刷《第一行代码》系列 07 —— Broadcast 广播

    前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...

  6. Android Broadcast广播机制分析

    基于Android 6.0的源码剖析, 分析android广播的发送与接收流程. 一.概述 广播(Broadcast)机制用于进程/线程间通信,广播分为广播发送和广播接收两个过程,其中广播接收者Bro ...

  7. 用Broadcast广播在activity之间、fragment之间、activity和fragment之间相互传数据

    例如:A界面要收到B界面的更变信息 一.A界面注册广播 private static final String INTENT_BROADCAST = "android.intent.acti ...

  8. Android开发学习—— Broadcast广播接收者

    1.现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息.    Android中:系统在运行过程中,会产生许多事件,那么某些事件产生时,比如:电量改变.收发短信. ...

  9. 【转】 android之如何在两个activity之间传递handler_利用broadcast广播机制

    原文:http://blog.csdn.net/jason0539/article/details/18075293 这算是如何在两个activity之间传递handler的解决方案二了,解决方案一见 ...

最新文章

  1. 965. Univalued Binary Tree
  2. 回调函数方法连续采集和发送软触发采集
  3. S3C2443时钟管理
  4. java流的序列化_Java中的对象流和序列化介绍
  5. sun.misc.Unsafe和堆外内存
  6. 2014 UESTC Training for Data Structures D - 长使英雄泪满襟
  7. 转载一篇杨澜的演讲稿——关于孩子的想象力创造力
  8. 2021-09-08FTRL 跟随正确的领导者
  9. 品优影视建站系统1.3.6.5开源绿色版
  10. 基于 Django框架的电子海图服务器设计
  11. VS2013 IDE C#生成CodeMap
  12. JavaScript逻辑训练题(二)
  13. PI控制器概念 笔记
  14. 纪录片:美国中情局解密 CIA Declassified 2013
  15. ionic加载html5,ionic 加载动画
  16. java 穷举 排列组合_穷举排列组合列表
  17. bilibili视频下载器v1.0.5 支持4K超清
  18. CenterNet代码解析-ctdet目标检测
  19. 数字互动沙盘解决方案
  20. 关于条码和标签打印以及条码打印机编程

热门文章

  1. 用户分析、店铺数据分析、小程序数据分析(思维导图)
  2. HTML简易滚动图片
  3. 【无标题】翻译数字孪生经典文章Shaping the digital twin for design and production engineering
  4. minecraft领取
  5. fire温度压力测试软件,3Dmark
  6. my97显示服务器时间,封装Web Uploader 上传插件、My97DatePicker、百度 编辑器 的使用 (ASP.NET MVC)...
  7. 中科三方域名管理专题:各种域名状态介绍
  8. elasticsearch之地理位置查询geo_shape
  9. 华为服务器pe下安装linux,华为服务器安装操作系统.docx
  10. MySql: 表级锁、行级锁、共享锁、排他锁、乐观锁、悲观锁