Android基础02
初识安卓的另一个重要的组件---广播。
1、广播的分类
标准广播:是一种完全异步执行的广播,在广播发出之后,所有的广播 接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有任何先后顺序可言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。

有序广播:是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先收到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了。

2、广播的注册方式
1、动态注册
动态注册是在app运行时注册。在需要注册的地方写以下代码(监听网络状态为例):
/**
* 下面是广播的代码
*/
// intentFilter = new IntentFilter();
// intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
// myInternetReceiver = new MyInternetReceiver();
// registerReceiver(myInternetReceiver,intentFilter);
并定义一个内部类,继承Androidx的BroadcastReceiver。
// //自定义的广播
// class MyInternetReceiver extends BroadcastReceiver{
// @Override
// public void onReceive(Context context, Intent intent) {
// Toast.makeText(context,"internet change",Toast.LENGTH_SHORT).show();
// ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
// if (activeNetworkInfo != null && activeNetworkInfo.isAvailable()){
// Toast.makeText(context,"现在有网",Toast.LENGTH_SHORT).show();
// }else {
// Toast.makeText(context,"没网了",Toast.LENGTH_SHORT).show();
// }
// }
// }
这样就可以动态注册。
2、静态注册
为了方便可以直接new一个自定义的类:new--other---Broadcast Receiver
新建后AS便帮助我们在AndroidManifest.xml中注册了该广播接收器。

因为此处是用开机自启动作示范,所以在该广播接收器内加入要接受的广播类型即开机
所以还需要添加一个权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
至此静态注册已经完成,重启模拟器后便可以接收到广播。
因为是按照《第一行代码》所学习的,那时Android版本还比较低,在后来谷歌更改了静态注册的规则,像这种开启自启动的(流氓)广播已经被禁止了。但是有一些豁免名单里的内容可以静态注册。
3、自定义广播
1、标准广播
做法与静态广播相同,不过不同的是监听的广播是自己自定义的。要新建一个继承BroadcastReceiver的类

然后在需要发送广播的地方插入逻辑代码:
Intent intent = new Intent("com.example.firstdemo.MY_BROADCAST");
Log.i("mytag", "onClick: "+getPackageName());
intent.setComponent(new ComponentName(getPackageName(),"com.example.firstdemo.MyBroadcastReceiver"));
sendBroadcast(intent);
注意:intent.setComponent()方法在书中并未使用,也是因为目前谷歌的规则更改后需要添加的内容,明确指定处理这个intent的组件。既然是使用intent来进行发送广播,那么当然可以在发送广播的时候传递一些数据,以待以后深入。
Android基础02的更多相关文章
- android 基础02 - Activity 的生命周期及状态
返回栈 Android 中的 Activity 是可以层叠的,当我们启动一个新的 Activity 时,就会覆盖在原有的 Activity 之上, 点击 Back 会销毁当前 Activity,下面的 ...
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字
084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...
- 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法
083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...
- 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法
082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...
- android基础---->IntentService的使用
这一篇博客,我们开始前台服务与IntentServie源码分析的学习,关于service的生命周期及其简单使用,请参见我的博客:(android基础---->service的生命周期) 目录导航 ...
- Android基础测试题(四)
看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...
- Android基础测试题(二)
今天给大家带来的是Android基础测试题(二) 题目要求: 定义一个5位长度的整型数组并初始化,然后构建方法根据用户传入的数字判断是否存在数组中,如果存在,返回所在位置,如果不存在,返回-1 首先第 ...
- javascript基础02
javascript基础02 1.数据类型 数据类型的描述在上篇的扩展中有写到链接 由于ECMAScript数据类型具有动态性,因此的确没有再定义其他数据类型的必要.这句话很重要. 如果以后再数据类型 ...
随机推荐
- switch,case语句易误区
switch case 语句语法格式如下: switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可 ...
- 定位一个网络问题引起的ceph异常
前言 有一个ceph环境出现了异常,状态就是恢复异常的慢,但是所有数据又都在走,只是非常的慢,本篇将记录探测出问题的过程,以便以后处理类似的问题有个思路 处理过程 问题的现象是恢复的很慢,但是除此以外 ...
- diamond收集插件的自定义
diamond是与graphite配合使用的一个数据收集的软件,关于这个配置的资料很多,使用起来也比较简单,详细的安装和配置会在后面的关于整套监控系统的文章里面写到,本篇是专门讲解怎么自定义这个数据收 ...
- linux系统中重启网卡后网络不通(NetworkManager篇)
一.故障现象 RHEL7.6系统,使用nmcli绑定双网卡后,再使用以下命令重启network服务后主机网络异常,导致无法通过ssh远程登录系统. # systemctl restart networ ...
- Java编发编程 - 线程池的认识(一)
每逢面试都会询问道线程池的概念和使用,但是工作中真正的又有多少场景使用呢?相信大家都会有这样的疑问:面试选拔造汽车,实际进公司就是拧螺丝!但是真正要把这颗螺丝拧紧,拧牢,没有这些最底层的知识做铺垫你可 ...
- scrapy学习之爬虫练习平台35
前言 上一篇文章中爬取了爬虫练习平台的所有 ssr 网站,都是比较简单的,没有反爬措施,这次来爬一下后面的 spa 系列. 环境准备 这里沿用了上篇文章的环境和设置,就不重新搭建环境了. 开始爬取 s ...
- PicGo+jsDelivr+GitHub搭建免费图床,Typora使用图床
Github配置 首先,创建一个GitHub账号 然后添加一个仓库 创建完后点头像,Setting 然后点击Developer settings 然后点击Personal access tokens ...
- bWAPP----HTML Injection - Reflected (URL)
HTML Injection - Reflected (URL) 核心代码 1 <div id="main"> 2 3 <h1>HTML Injection ...
- Springboot整合163邮箱部署项目时发送不了邮件的解决方案
部署到腾讯云服务器时项目报错 Caused by: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: sm ...
- Mac下载工具folx如何下载常用的软件
最近,多档综艺节目都开展得如火如荼,比如<中国新说唱>.<这就是街舞>等深受年轻人喜欢的综艺节目.虽然手机端也可观看,但可以的话,当然是使用电脑屏幕观看节目比较过瘾. 接下来, ...