Android 四大组件 -- BroadcastReceiver(广播)
Android开发的四大组件分别是:
- 活动(activity),用于表现功能;
- 服务(service),后台运行服务,不提供界面呈现;
- 广播接受者(BroadcastReceive),勇于接收广播;
- 内容提供者(Content Provider),支持多个应用中存储和读取数据,相当于数据库
注意:所有的组件都需要注册
一、本文讲的是广播
(BroadcastReceiver)
Android中的四大组件之一,是Android系统以及应用程序传递信号的一种机制。它灵活的穿梭在各个应用程序之间或者是单个应用程序的内部,一旦发现满足条件的接收者,就会去这个接收者中进行广播
点击参考官网
使用场景
- 手机快没电了,弹出了提示电量不足的消息窗口
- 逛淘宝的时候没信号,会弹出提示无法连接网络的提示信息
- 电话来电的时候
二、广播的注册方式
静态注册
(清单声明的接收器)动态注册
(上下文注册的接收器)
1、静态注册
- 创建MyBroadcastReceiver类,继承BroadcastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context,"静态广播------",Toast.LENGTH_SHORT).show();}
}
- 在清单文件(AndroidManifest.xml)中注册
<receiver android:name=".MyBroadcastReceiver" android:enabled="true" android:exported="true"><intent-filter><action android:name="com.example.demoh.MyBroadcastReceiver"/></intent-filter></receiver>
Enabled属性的作用是是否启动这个广播接受器。
Exported属性的作用是是否允许这个广播接收器接受本程序以外的广播
android:name =" 里面的名字可随意(最好是统一包名+类名)"
写一个发送广播的点击事件
activity_main.xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="点击发送静态广播" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="点击发送动态广播" /></LinearLayout>
- MainActivity
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=findViewById(R.id.button);//点击事件的处理button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent();intent.setAction("com.example.demoh.MyBroadcastReceiver");//安卓8.0以上,加上下面这一句,第一个参数是目标广播接收器所在应用的包名,第二个参数是目标广播接收器类全路径intent.setComponent(new ComponentName(getPackageName(),getPackageName()+".MyBroadcastReceiver"));sendBroadcast(intent);}});}
}
`注意:如果点击无效果,不发送广播,或者您的应用以 API 级别 26(安卓8.0) 或以上更高级别的平台版本为目标,加上 下面的一句
intent.setComponent(new ComponentName(getPackageName(),getPackageName()+".MyBroadcastReceiver"));
//intent.setComponent(new ComponentName(包名,包名+".MyBroadcastReceiver"));
2、动态注册
- 创建MyBroadcastReceiver2类,继承BroadcastReceiver
public class MyBroadcastReceiver2 extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context,"动态广播------",Toast.LENGTH_SHORT).show();}
}
- 在清单文件(AndroidManifest.xml)中注册
<receiver android:name=".MyBroadcastReceiver2"/>
- 布局上面有
public class MainActivity extends AppCompatActivity {private MyBroadcastReceiver2 receiver2=new MyBroadcastReceiver2();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=findViewById(R.id.button);Button button2=findViewById(R.id.button2);//静态注册点击事件button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent();intent.setAction("com.example.demoh.MyBroadcastReceiver");intent.setComponent(new ComponentName(getPackageName(),getPackageName()+".MyBroadcastReceiver"));sendBroadcast(intent);}});//动态注册点击事件IntentFilter filter=new IntentFilter();filter.addAction("com.example.demoh.MyBroadcastReceiver2");registerReceiver(receiver2,filter);button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent();intent.setAction("com.example.demoh.MyBroadcastReceiver2");intent.setComponent(new ComponentName(getPackageName(),getPackageName()+".MyBroadcastReceiver2"));sendBroadcast(intent);}});}@Overrideprotected void onDestroy() {super.onDestroy();unregisterReceiver(receiver2);}
}
别忘了在onDestroy()中 销毁广播
Android 四大组件 -- BroadcastReceiver(广播)相关推荐
- Android四大组件---BroadcastReceiver
前言: BroadcastReceiver(广播接收器),属于 Android 四大组件之一 在 Android 开发中,BroadcastReceiver 的应用场景非常多 今天,我将详细讲解关于B ...
- Android四大组件之广播接收器BroadcastReceiver
Android系统的广播有一个全局监听器,专门用于监听/接收应用程序发出的广播消息. 广播的作用 可以实现不同组件之间的通信(这些组件可以是同一应用内的或不同应用内的.) 多线程通信 与Android ...
- Android四大组件:广播机制——BroadcastReceiver
Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为 ...
- 探索Android四大组件之广播
目录 一.广播的机制 二.探索广播 1.动态注册 2.静态注册和发送标准广播 3.发送有序广播 三.提出问题 第一个问题 第二个问题 第三个问题 四.探索问题 第一个问题 第二个问题 第三个问题 广播 ...
- Android 四大组件之广播(Broadcast)
一.广播是什么? 广播分为发送者和接受者,可以理解为发送者发送通知,接受者可以选择接收通知 广播分为系统广播和本地广播,系统广播可以分为标准和有序 标准广播:一但发出所有接收者同时受到 有序广播:接收 ...
- Android四大组件-Service
目录 启动方式 独立启动 使用场景 生命周期 绑定启动 使用场景 生命周期 特性 多次启动 版本适配 5.0(21) 8.0(26) 9.0(28) 12(31) 后台启动服务思路 广播启动 省电白名 ...
- android 广播的权限,Android四大组件详解之BroadcastReceiver广播接收者
Android四大组件详解---BroadcastReceicer广播接收者 广播有两个角色,一个是广播发送者,另一个是广播接收者. 广播按照类型分为两种,一种是全局广播,另一种是本地广播 全局广播: ...
- Android四大组件之BroadCastReceiver
1. 基本概念 在Android 中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制.而BroadcastReceiver 是对发送出来的Broadcast 进行过滤接受并响应的一类 ...
- Android四大组件系列7 Broadcast广播机制(上)
一 概述 广播 (Broadcast) 机制用于进程或线程间通信,广播分为广播发送和广播接收两个过程,其中广播接收者 BroadcastReceiver 是 Android 四大组件之一.Broadc ...
最新文章
- VML编程之------VML语言入门《VML极道教程》原著:沐缘华
- 说说重试的那些实现方式
- 充电桩用什么写软件_充电桩云平台是什么?
- iOS10 资料汇总:值得回看的 10 篇 iOS 热文
- linux 内核内核签名_24岁生日快乐,Linux内核
- leetcode-125 Valid Palindrome
- 基于OpenCV文字特征提取
- for ihs linux_在IBM的IHS上编译PHP(redhat 5.5 64位的环境)
- selenium操作浏览器
- UML for mac
- 【Java实战篇】SpringBoot+MyBatis快速实现登录注册
- 还在谈论云计算吗?算力网络来啦!!!
- MySQL中ignore,replace的使用
- JavaScript实现论坛发贴等功能
- Matlab绘图——填充相交区域
- 将ocx和DLL文件打包成cab文件,实现IE浏览器在线安装
- 刘未鹏逃出肖申克系列链接
- 如何解决NTLDR is missing
- 为什么CNN中的卷积核一般都是奇数
- 基于瞬时无功功率ip-iq的谐波信号检测MATLAB仿真