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

从源码角度看广播

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

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

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

    Android广播分为两个方面:广播发送者、广播接收者(BroadcastReceiver) ---- 2. 作用 用于监听(接收)应用发出的广播消息,并做出响应 最常见的应用场景 a....(一般情况下是Activity)相应的消息循环队列中; 消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive()方法。...(一般情况下是Activity)相应的消息循环队列中; 消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive()方法。...4.2.2 动态注册 在代码中通过调用Context的registerReceiver()方法进行动态注册BroadcastReceiver @Override protected void onCreate...总结 相信大家已经非常了解关于BroadcastReceiver的相关知识 接下来,我会继续介绍具体如何在Android中的其他知识,有兴趣可以继续关注Carson_Ho的安卓开发笔记 ---- 请帮顶

    1.9K10

    重学安卓逆向:获得广告&弹窗静默卡

    安卓四大组件 安卓应用程序的基本组成部分由四大组件构成,它们分别是Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供器...这些组件共同协作,实现了安卓应用的各种功能。以下是对这四大组件的详细解释: Activity(活动): 定义: Activity是安卓应用中用户与应用进行交互的界面单元。...BroadcastReceiver(广播接收器): 定义: BroadcastReceiver是一种用于接收系统或其他应用发送的广播消息的组件。...当广播事件匹配注册的条件时,系统会调用BroadcastReceiver的onReceive()方法。...这四大组件共同构建了安卓应用的架构,使得应用能够灵活、高效地处理用户交互、后台任务、数据管理以及与其他应用的通信。理解和熟练使用这些组件是安卓应用开发的基础。

    10400

    物联网项目 | LeanCloud+树莓派+安卓实现住宅环境异常告警系统

    完成后的树莓派和传感器 目录 前言 目录 物料清单 软件架构 室内环境条件监控模块 手机监视APP模块 硬件模块使用 DHT11温湿度传感器 MQ-2烟雾传感器 云后端接入与使用 为安卓用户端接入LeanCloud...数据及消息推送SDK LeanCloud安卓SDK初始化 LeanCloud安卓消息推送服务初始化 LeanCloud安卓消息推送服务接入完成测试 为用户端监测硬件 —— 树莓派接入LeanCloud....运行正常,结果如图: MQ-2正常工作,TTL口输出高电平表示正常 云后端接入与使用 云后端的作用就是充当手机APP和物联网硬件之间的桥梁,也就是我们的树莓派和安卓APP之间用于推送消息以及保存传感器数据的中间人...,代码如下: public class MyCustomReceiver extends BroadcastReceiver { @Override public void onReceive...App详细设计 为了减少项目复杂度,本项目采用最简单的安卓开发模式:MVC。一个MainActivity和对应界面即可。

    1.4K21

    利用广播实现ip拨号

    广播接收者,broadcast receiver,安卓系统在使用时会产生很多的事件,比如:短信到来,电量低,拨打电话等等 界面布局,线性布局,EditText指定为电话号码,设置属性android:inputType...方法 调用Editor对象的putString(key,value)方法,存入数据 调用Editor对象的commit()方法,提交 调用sp对象的getString(name,defValue)方法,...获取到存入的数据 新建一个类OutRecevier继承 BroadcastReceiver 在清单文件中进行配置 添加节点,设置名称属性android:name=”.OutReceiver...,就会调用OutReceiver里面的onReceive()方法 需要添加权限,android.permission.PROCESS_OUTGOING_CALL 调用broadcastReciiver对象的...getResultData()方法,可以得到传递的数据,如果打电话能获取到号码 调用Context对象的getSharedPreferences()方法,获取到sp对象 调用sp对象的getString

    1.4K40

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

    1、描述广播接收者 BroadCastReceiver是安卓中四大组件之一,主要用于接收系统或者APP发送的广播事件。...广播两种:有序和无序 内部通信实现机制:通过安卓系统的Binder机制是实现通信。 无序广播:完全异步,逻辑上被任何广播接受者接收到。优点是效率高。...2、在清单文件(manifest)和代码中如何注册和使用BroadcastReceiver? 在清单文件中注册广播接收者成为静态注册,在代码中注册则为动态注册。...a.从MVC的角度考虑,其实回答这个问题的时候还可以这样问,安卓为什么有四大组件,现在的移动开发模型基本上是照搬WEB开发的MVC构架,只不过是改了点嫁装而已。...安卓的四大组件本质上就是为了实现移动或者说嵌入式设备上的MVC构架,它们会见有时候是一种相互依存的关系,有时候又是一宗相互补充的关系,引入广播机制可以方便几大组件信息和数据的交互。

    1.4K20

    正确使用IntentService的姿势

    在开发安卓应用的过程中,我们经常需要这样的场景:希望APP在不影响当前用户的操作的前提下,在后台默默的做一些任务。比如:静默的下载文件或者上传数据。我们一般会考虑到新启一个线程去做异步的操作。...IntentService会在任务执行完成后自行结束自己,而不需要外部去调用stopService了。 . 2.正确使用的姿势 优点我们已经知道了,那该如何正确的使用呢?...我们看下IntentService的源码: 1 // 首先呢在Service的onCreate生命周期中创建了一个子线程的Handler 2 @Override 3 public...因为只有handleMessage方法调用后才会调用onHandleIntent方法去处理任务。那么IntentService在哪里去调用Handler的handleMessage方法的呢?...所以,第一步我会写一个BroadcastReceiver去监听网络的变化: 1public class NetworkReceiver extends BroadcastReceiver { 2

    2.3K20

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

    前言 BroadcastReceiver(广播接收器),属于 Android 四大组件之一 在 Android 开发中,BroadcastReceiver 的应用场景非常多 今天,我将详细讲解关于BroadcastReceiver...定义 即 广播,是一个全局的监听器,属于Android四大组件之一 Android 广播分为两个角色:广播发送者、广播接收者 2....基类 必须复写抽象方法onReceive()方法 广播接收器接收到相应广播后,会自动回调 onReceive() 方法 一般情况下,onReceive方法会涉及 与 其他组件之间的交互,如发送Notification...BroadcastReceivre基类 public class mBroadcastReceiver extends BroadcastReceiver { // 复写onReceive()方法...// 接收到广播后,则自动调用该方法 @Override public void onReceive(Context context, Intent intent) { //写入接收广播后的操作

    66510

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

    [从可恶的广告开始] 前几天家里买了台新创维电视,安装好兴冲冲的开机,突然蹦出的广告让我心凉了半截,进了安卓系统,发现啥都没有,不能自己装软件,只能从那只有不到20款软件的破商店里下载,更可恶的是这广告还两天一换...实际上这只是唬人的名字,智能电视就是带超大屏幕的安卓平板,只是这平板锁住了70%的功能,而且没有刷机用的连接接口,怎么办呢?只能从网络上想办法了。...电视的安卓系统居然是直接以root权限运行的,我对创维公司已经无语了,接下来一切好办,开两个shell窗口,一个登录进安卓系统,另一个用adb连接: adb push su /system/xbin pm...第二个位置里的画面是安卓自带的没有被改变,这里顺便说一说安卓系统开机画面的格式,bootanimation.zip里面压缩了一个文件夹和一个desc.txt文本文件,文件夹里可以是一张图,也可以是一系列动态图片以实现开机动画...2 修改/system/etc/install-recovery.sh,把adblock.sh的内容添加进去。

    2.5K91

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

    所以检测网络状态时需要分版本进行检测 1.3 具体检测代码 //检测当前的网络状态 //API版本23以下时调用此方法进行检测 //因为API23后getNetworkInfo(int networkType...:" + isWifiConn); tv_Network_state.setText("移动数据是否连接:" + isMobileConn); } //API版本23及以上时调用此方法进行网络的检测...监听网络变化 使用BroadcastReceiver广播接收器来接收网络状态(采用系统广播) BroadcastReceiver作为Android四大组件之一; 如果不懂得如何使用BroadcastReceiver...,请看我写的另外一篇文章: Android:BroadcastReceiver广播接收器最全面解析 ---- 3....总结 相信大家已经非常了解改如何检测网络状态&监听网络变化 接下来,我会继续介绍具体如何在Android中的其他知识,有兴趣可以继续关注Carson_Ho的安卓开发笔记 ---- 请帮顶 / 评论点赞!

    15.8K22

    Android内存泄露和ANR

    未注销监听器或回调 例如未在 onDestroy() 中移除 BroadcastReceiver、LiveData 观察者等。5. 资源未释放 文件流、数据库游标(Cursor)等未及时关闭。...BroadcastReceiver.onReceive() 未完成前台 10 秒 / 后台 60 秒在 onReceive() 中执行耗时操作(如数据库读写)。...日志分析当 ANR 发生时,系统会生成 /data/anr/traces.txt 文件,记录主线程的堆栈信息:adb pull /data/anr/traces.txt查找主线程中阻塞的方法调用(如 Thread.sleep...合理使用 BroadcastReceiver在 onReceive() 中仅处理轻量级逻辑,如需耗时操作,启动 IntentService 或 WorkManager: public class MyReceiver...extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent

    14500
    领券