首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android四大组件:BroadcastReceiver史上最全面解析

实现原理 Android的广播使用了设计模式的观察者模式:基于消息的发布/订阅事件模型。 因此,Android将广播的发送者和接收者极大程度解耦,使得系统能够方便集成,更易扩展。...(一般情况下是Activity)相应的消息循环队列; 消息循环执行拿到此广播,回调BroadcastReceiveronReceive()方法。...,会自动回调onReceive()方法 一般情况下,onReceive方法会涉及与其他组件之间的交互,发送Notification、启动service等 默认情况下,广播接收器运行在UI线程,因此,onReceive...系统广播(System Broadcast) Android内置了多个系统广播:只要涉及到手机的基本操作(开机、网络状态变化、拍照等等),都会发出相应的广播 每个广播都有特定的Intent - Filter...总结 相信大家已经非常了解关于BroadcastReceiver的相关知识 接下来,我会继续介绍具体如何在Android的其他知识,有兴趣可以继续关注Carson_Ho的开发笔记 ---- 请帮顶

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

四大组件之Broadcast Receiver-广播接收者

1、描述广播接收者 BroadCastReceiver四大组件之一,主要用于接收系统或者APP发送的广播事件。...广播两种:有序和无序 内部通信实现机制:通过系统的Binder机制是实现通信。 无序广播:完全异步,逻辑上被任何广播接受者接收到。优点是效率高。...在我们的项目中经常使用广播接收者收系统的通知,比如开机启动,Sd卡挂载,低电量,外拨电话,锁屏等等、 如果我们做的是播放器,那么监听用户锁屏后我们应该将我们的播放暂停等等,总之用处还是挺广泛的。...2、在清单文件(manifest)和代码如何注册和使用BroadcastReceiver? 在清单文件中注册广播接收者成为静态注册,在代码中注册则为动态注册。...a.广播接收者生命周期短暂,在接收到广播的时候创建,onReceive方法结束后销毁 b.广播接收者不要做耗时的操作,否则会弹出ANR错误对话框 c.最好也不要在广播接收者创建子线程做耗时的工作

1.1K20

【Android从零单排系列三十八】《Android四大组件——BroadcastReceiver

BroadcastReceiver基本介绍 BroadcastReceiver(广播接收器)是Android的一个组件,用于接收和响应系统或应用发送的广播消息。...当匹配的广播消息被发送时,系统将自动调用BroadcastReceiveronReceive()方法,并传递广播消息作为参数。...在接收到广播时,可以使用该属性进行相关操作,启动服务、发送广播等。...BroadcastRecevier可以在接收到广播后执行一些操作,启动服务、显示通知、更新UI等。 可以使用abortBroadcast()方法终止广播以阻止其传递给其他接收者。...BroadcastReceiver在Android开发具有广泛的应用,例如监听网络状态变化、监听系统事件、管理通知等。

25410

从源码角度看广播

简介 几乎每个应用都无可避免的使用到广播。例如监听WIFI的开启状态、时间的获取,甚至是我们最常用的闹钟功能,都是结合着AlarmManager与广播来实现的。...理解广播的注册、发送与接收实现源码将使我们更加懂系统,同时,基于对广播的理解,我们也能很快的掌握AMS其它组件的实现原理。 网上对于广播源码的分析数以千计,其中不乏精品的文章。...的代理对象,binder call调用,随后在App调用BroadcastReceiver.onReceive方法;静态广播的派发是从ResolverInfo对象取出processName, 再取出...ProcessRecord, 最后在LoadedApk调用了BroadcastReceiver.onReceive 读懂”adb shell dumpsys activity b” ?...,执行BroadcastReceiver.onReceive方法 dumpsys activity b中保存着广播注册、发送涉及的重要数据结构的实时状态与历史状态,对调试很有帮助

50740

面向初学者的 Android 应用开发基础知识

基础 1. Android 编程语言 在 Android ,基本上,编程是用两种语言JAVA 或 C++和XML(扩展标记语言)完成的。如今,KOTLIN 也是首选。...2.组件 App 组件是 Android 的构建块。每个组件都有自己的角色和生命周期,即从应用程序启动到结束。其中一些组件还依赖于其他组件。每个组件都有明确的用途。...语法: public class MyReceiver extends BroadcastReceiver{ public void onReceive(context,intent){ } 内容提供者...它还包含应用程序的硬件和软件功能,这些功能决定了应用程序在 Play 商店的兼容性。它还包括特殊活动,服务、广播接收器、内容提供者、包名称等。...资源文件夹: res 或 Resource 文件夹包含应用程序中使用的各种资源。这包括子文件夹,drawable、layout、mipmap、raw和values。可绘制对象由图像组成。

1.1K20

Android下屏幕锁屏弹窗的正确姿势

最近在做一个关于屏幕锁屏悬浮窗的功能,于是在网上搜索了很多屏幕锁屏的相关资料,鉴于网上的资料比较零碎,所以我在这里进行整理总结。本文将从以下两点对屏幕锁屏进行解析: 1....如何在锁屏界面弹出悬浮窗 如何监听系统屏幕锁屏 经过总结,监听系统的锁屏可以通过以下两种方式: 1) 代码直接判定 2) 接收广播 1) 代码直接判定 代码判断方式,也有两种方法: a)...Boolean) mReflectScreenState.invoke(pm); } catch (Exception e) { e.printStackTrace() } 2) 接收广播 当系统锁屏或者屏幕亮起...竟然知道了对于系统屏幕监听的方法,那么接下来就是要在屏幕锁屏的时候,弹出悬浮框了,这个的实现方式有两种: 1) 使用WindowManager 2) 使用Activity 目前情况是,使用这两种方式在真机上都可以实现...一般是注册一个广播接收器,在接收到指定广播之后判断是否需要弹窗,所以在BroadcastReceiver的接收代码需要先判断是否为锁屏状态下: @Override public void

2.6K20

利用广播实现ip拨号

广播接收者,broadcast receiver,系统使用时会产生很多的事件,比如:短信到来,电量低,拨打电话等等 界面布局,线性布局,EditText指定为电话号码,设置属性android:inputType...value)方法,存入数据 调用Editor对象的commit()方法,提交 调用sp对象的getString(name,defValue)方法,获取到存入的数据 新建一个类OutRecevier继承 BroadcastReceiver...设置名称android:name=”android.intent.action.NEW_OUTGOING_CALL” 关心打电话这个动作 当有上面动作的广播产生的时候,就会调用OutReceiver里面的onReceive...android.content.Intent; import android.content.SharedPreferences; public class OutReceiver extends BroadcastReceiver...{ /** * 接收广播 */ @Override public void onReceive(Context context, Intent intent

1.3K40

8.广播

广播接收者 现实:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息 Android系统在运行过程,会产生会多事件,那么某些事件产生时,比如:电量改变、收发短信、拨打电话...使用广播接收者,就可以收听广播 创建广播接收者 定义java类继承BroadcastReceiver 在清单文件定义receiver节点,定义name属性,指定广播接收者java类的全类名 在intent-filter...动态注册:需要使用广播接收者时,执行注册的代码,不需要时,执行解除注册的代码 中有一些广播接收者,必须使用代码注册,清单文件注册是无效的 屏幕锁屏和解锁 电量改变 public class MainActivity...,系统会自动启动该接收者所在的进程 案例2:短信拦截器 系统收到短信时会产生一条广播,广播包含了短信的号码和内容 系统发送短信广播时,是怎么把短信内容存入广播的,我们就只能怎么取出来 如果短信过长,...原理:应用在安装卸载更新时,系统会发送广播,广播里会携带应用的包名 清单文件定义广播接收者接收的类型,因为要监听应用的三个动作,所以需要接收三种广播 <receiver android:name

1.6K100

Carson带你学Android:手把手教你学会广播组件-BroadcastReceiver

实现原理 4.1 采用的模型 Android的广播使用了设计模式的观察者模式:基于消息的发布 / 订阅事件模型 因此,Android将广播的发送者 和 接收者 解耦,使得系统方便集成,更易扩展 4.2...使用流程 使用流程如下: 下面,我将一步步介绍如何使用BroadcastReceiver 即上图中的 开发者手动完成部分 5.1 自定义广播接收者BroadcastReceiver 继承BroadcastReceivre...基类 必须复写抽象方法onReceive()方法 广播接收器接收到相应广播后,会自动回调 onReceive() 方法 一般情况下,onReceive方法会涉及 与 其他组件之间的交互,发送Notification...、启动Service等 默认情况下,广播接收器运行在 UI 线程,因此,onReceive()方法不能执行耗时操作,否则将导致ANR 代码范例 mBroadcastReceiver.java // 继承...系统广播(System Broadcast) Android内置了多个系统广播:只要涉及到手机的基本操作(开机、网络状态变化、拍照等等),都会发出相应的广播 每个广播都有特定的Intent - Filter

63210

Android:检测网络状态&监听网络变化

Android开发,许多功能需要网络连接,所以在开发过程需要进行手机网络的检测 今天,我将教大家如何进行网络状态的检测和监听网络状态的变化 ---- 目录 ? ---- 1....监听网络变化 使用BroadcastReceiver广播接收器来接收网络状态(采用系统广播) BroadcastReceiver作为Android四大组件之一; 如果不懂得如何使用BroadcastReceiver...,请看我写的另外一篇文章: Android:BroadcastReceiver广播接收器最全面解析 ---- 3....{ @Override public void onReceive(Context context, Intent intent) { System.out.println...总结 相信大家已经非常了解改如何检测网络状态&监听网络变化 接下来,我会继续介绍具体如何在Android的其他知识,有兴趣可以继续关注Carson_Ho的开发笔记 ---- 请帮顶 / 评论点赞!

15.2K22

Android面试大纲(集合)

栈顶页面 2 Service面试题 1、Service是什么 Service是四大组件之一,它可以在后台执行长时间运行操作而没有用户界面的应用组件 2、Service和Thread的区别 Service是系统的组件...在3.0以前Bitmap是存放在堆的,我们只要回收堆内存即可 在3.0以后Bitmap是存放在内存的,我们需要回收native层和Java层的内存 官方建议我们3.0以后使用recycle...卡顿面试题 1、UI卡顿原理 View的绘制帧数保持60fps是最佳,这要求每帧的绘制时间不超过16ms(1000/60),如果不能在16ms内完成界面的渲染,那么就会出现卡顿现象 2、UI卡顿的原因分析...4、避免在UI线程做繁重的操作 21 架构模式面试题 Android基础——框架模式MVC在的实践 http://blog.csdn.net/qq_30379689/article/details...) DexClassLoader:能够加载未安装的jar/apk/dex,主要用于动态加载和代码热更新 PathClassLoader:只能加载系统已经安装过的apk 23 热更新面试题 1、热更新主要流程

1.1K20

备战秋招 面试真题: 给你一个Demo 你如何快速定位ANR?

其他原因: ③在BroadcastReceiver里做耗时的操作或计算; ④CPU使用过高; ⑤发生了死锁; ⑥耗时操作的动画需要大量的计算工作,可能导致CPU负载过重。...5)BroadcastReceiveronReceive代码也要尽量减少耗时。...如果必须在onReceive方法执行耗时操作,建议使用IntentService进行处理,IntentService集开启线程和自动关闭服务两种功能于一身,本身非常灵活。...连接手机,进行一段操作,系统会生成一份Html文件,在谷歌浏览器打开,如图: ①Sytrace会显示在这段操作期间所有的进程信息,在其中找到自己的进程,可以看到在测试进程,我们定位UI Thread...,可以看到里面的系统方法,这是UI渲染时的调用方法,上面有一个个的圈,绿色圈代表帧渲染时间是16.6ms(Android系统渲染UI界面时间为1秒60帧,每帧即16.6ms),超过该值的帧用红色圈标注;

67150

第一行代码——全局大喇叭,详解广播机制

BroadcastReceiver能接收到这条消息,当这个BroadcastReceiver的逻辑执行完成后,广播才会继续传递。...所以此时的BroadcastReceiver是有先后顺序的,优先级高的BoradcastReceiver先收到,并且可以截断,后面的BroadcastReceiver就无法收到 接收系统广播 注册BroadcastReceiver...每当系统时间发生变化onReceive()方法就会被执行 系统时间发生变化时发出的就是android.intent.action.TIME_TICK的action所以在onCreate()方法创建一个...所以强制下线的逻辑并不是在MainActivity写,而应该写在接收这条广播的BroadcastReceiver里,这样强制下线的功能就不会依附于任何界面 静态注册的BroadcastReceiver...无法弹出对话框这样的UI控件,又不能在每一个Activity中注册一个动态的BroadcastReceiver 只需要在BaseActivity动态注册一个BroadcastReceiver就可以了,

87510

走进科学:揭秘如何入侵电视机

[从可恶的广告开始] 前几天家里买了台新创维电视,安装好兴冲冲的开机,突然蹦出的广告让我心凉了半截,进了系统,发现啥都没有,不能自己装软件,只能从那只有不到20款软件的破商店里下载,更可恶的是这广告还两天一换...电视的系统居然是直接以root权限运行的,我对创维公司已经无语了,接下来一切好办,开两个shell窗口,一个登录进系统,另一个用adb连接: adb push su /system/xbin pm...系统的开机界面存在两个位置,开机画面是一个zip文件,一个位置在/data/local/bootanimation.zip,另一个在 /system/media/bootanimation.zip,...第二个位置里的画面是自带的没有被改变,这里顺便说一说系统开机画面的格式,bootanimation.zip里面压缩了一个文件夹和一个desc.txt文本文件,文件夹里可以是一张图,也可以是一系列动态图片以实现开机动画...这招在其他平板上可行,可TMD创维在init.rc里把install-recovery.sh给注释掉了,此路不通也。

2.3K91

Broadcast 使用详解

1.静态注册 一些系统发送的广播需要在Androidmainfest.xml静态注册,例如 开机广播,apk状态改变广播,电量状态改变广播等。...,通常格式如下: //动态注册广播 registerReceiver(BroadcastReceiver, IntentFilter); 动态注册 监听灭屏、点亮屏幕的广播 在广播动态注册广播请注意一定要使用...低优先级广播最后处理 注意 : 有序广播需要声明并使用权限 1.声明使用权限 <!...3.发送持续广播(已经被弃用) 粘性广播会在Android系统中一直存在,不过随着 Android系统的不断更新,此方法逐渐被抛弃,使用方法如下:sendStickyBroadcast(intent);...接受广播类 主要继承 BroadcastReceiver,然后在onReceive方法,过滤广播Action携带的Intent,然后进行相关处理。 接收开机广播的方法 1.

99320
领券