Broadcast 广播-(18)
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)相关推荐
- Broadcast广播-Android
一.Broadcast 1.定义 在 Android 中,Broadcast 是一种在应用程序之间传输信息的机制,要发送的广播内容是一个 Intent,这个 Intent 中可以携带我们要传送的数据. ...
- Upd通信之QUdpSocket的unicast单播、broadcast广播、multicast组播
简 述: 了解Upd通信之QUdpSocket的unicast单播.broadcast广播.multicast组播,书写一个简单地例子:然后写了一个小的Qt例子,用来实现和验证它的空间的一些属性和功能 ...
- 【Android入门】5、Broadcast 广播、Kotlin 的高阶函数、泛型、委托
六.BroadCast 广播 广播用于在Android系统内实现通知,概念较为简单 为了实现上述效果, 代码如下 基础类如下, 定义了receiver, 当收到消息时, 触发receiver逻辑(弹窗 ...
- 张萌韩墨羽——BroadCast 广播
BroadCast 广播 广播作用以及机制 其实BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段, 系统自己在很多时候都会发送广播,比如电量低或者充足,刚启动完,插入耳机 ...
- Android Studio 单刷《第一行代码》系列 07 —— Broadcast 广播
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- Android Broadcast广播机制分析
基于Android 6.0的源码剖析, 分析android广播的发送与接收流程. 一.概述 广播(Broadcast)机制用于进程/线程间通信,广播分为广播发送和广播接收两个过程,其中广播接收者Bro ...
- 用Broadcast广播在activity之间、fragment之间、activity和fragment之间相互传数据
例如:A界面要收到B界面的更变信息 一.A界面注册广播 private static final String INTENT_BROADCAST = "android.intent.acti ...
- Android开发学习—— Broadcast广播接收者
1.现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息. Android中:系统在运行过程中,会产生许多事件,那么某些事件产生时,比如:电量改变.收发短信. ...
- 【转】 android之如何在两个activity之间传递handler_利用broadcast广播机制
原文:http://blog.csdn.net/jason0539/article/details/18075293 这算是如何在两个activity之间传递handler的解决方案二了,解决方案一见 ...
最新文章
- 965. Univalued Binary Tree
- 回调函数方法连续采集和发送软触发采集
- S3C2443时钟管理
- java流的序列化_Java中的对象流和序列化介绍
- sun.misc.Unsafe和堆外内存
- 2014 UESTC Training for Data Structures D - 长使英雄泪满襟
- 转载一篇杨澜的演讲稿——关于孩子的想象力创造力
- 2021-09-08FTRL 跟随正确的领导者
- 品优影视建站系统1.3.6.5开源绿色版
- 基于 Django框架的电子海图服务器设计
- VS2013 IDE C#生成CodeMap
- JavaScript逻辑训练题(二)
- PI控制器概念 笔记
- 纪录片:美国中情局解密 CIA Declassified 2013
- ionic加载html5,ionic 加载动画
- java 穷举 排列组合_穷举排列组合列表
- bilibili视频下载器v1.0.5 支持4K超清
- CenterNet代码解析-ctdet目标检测
- 数字互动沙盘解决方案
- 关于条码和标签打印以及条码打印机编程
热门文章
- 用户分析、店铺数据分析、小程序数据分析(思维导图)
- HTML简易滚动图片
- 【无标题】翻译数字孪生经典文章Shaping the digital twin for design and production engineering
- minecraft领取
- fire温度压力测试软件,3Dmark
- my97显示服务器时间,封装Web Uploader 上传插件、My97DatePicker、百度 编辑器 的使用 (ASP.NET MVC)...
- 中科三方域名管理专题:各种域名状态介绍
- elasticsearch之地理位置查询geo_shape
- 华为服务器pe下安装linux,华为服务器安装操作系统.docx
- MySql: 表级锁、行级锁、共享锁、排他锁、乐观锁、悲观锁