关于安卓重写广播接收者时的一次记录

简介: 安卓重写广播接收者时的一次记录

最近

在安卓开发的时候,由于在广播类里面,不恰当的定义,导致了栈溢出的问题,因此记录以下

首先,自定义广播接收者,需要继承BroadcastReceiver这个类,然后实现里面的onReceive方法,如下图:

网络异常,图片无法展示
|

这个时候,需要注意的是,关于这个类里面,有关变量的定义问题。本次项目中,遇到的是Handler的定义,下面看以下具体的操作过程:

MainActivity布局:


网络异常,图片无法展示
|

MainActivity.java


网络异常,图片无法展示
|

广播接收者:



网络异常,图片无法展示
|


启动应用,观察log:


网络异常,图片无法展示
|

可以看到,每次接收广播后,handler的内存地址都发生了改变,所以onReceive()方法,是会每次执行,都会创建一个对象的,实际使用中, 就要注意相关变量,是否应该修饰为static或者使用其他修饰,防止因某些变量增加过多,导致内存的频繁gc或者栈堆溢出。

that's all

目录
相关文章
|
6月前
|
Java API 调度
Android系统 自定义开机广播,禁止后台服务,运行手动安装应用接收开机广播
Android系统 自定义开机广播,禁止后台服务,运行手动安装应用接收开机广播
334 0
|
6月前
|
安全 Android开发
Android 预置可卸载分区接收不到任何广播问题分析和解决
Android 预置可卸载分区接收不到任何广播问题分析和解决
206 0
|
5月前
|
设计模式 Android开发
44. 【Android教程】广播接收器:Broadcast Receiver
44. 【Android教程】广播接收器:Broadcast Receiver
99 2
|
5月前
|
存储 Android开发 Kotlin
Kotlin开发安卓app,在使用 MediaPlayer 播放 res/raw 中的音乐时遇到突然中断的问题,而 onErrorListener 没有接收到任何报错
在使用 Android MediaPlayer 播放 res/raw 中的音乐时遇到中断问题,可能的原因包括资源问题、媒体文件编码格式、生命周期管理和设备资源配置。要排查问题,检查音频文件是否正确包含,格式编码是否支持,MediaPlayer 是否正确管理及释放,以及设备是否有足够存储和配置。通过设置 onErrorListener 日志和确保在 onDestroy 中释放资源来调试。如果文件过大,考虑使用 AssetManager。遵循这些步骤可帮助诊断并解决播放中断的问题。
|
Java API Android开发
Android 静态注册广播接收者和动态注册广播接收者(Android8.0之前和之后)
Android 静态注册广播接收者和动态注册广播接收者(Android8.0之前和之后)
374 0
|
6月前
|
XML Java Android开发
Android Studio App开发之监听系统广播Broadcast的讲解及实战(包括接收分钟到达广播、网络变更广播、定时管理器等 附源码)
Android Studio App开发之监听系统广播Broadcast的讲解及实战(包括接收分钟到达广播、网络变更广播、定时管理器等 附源码)
451 0
|
Android开发
Android 使用UDP进行通讯(发送数据和接收数据)
Android 使用UDP进行通讯(发送数据和接收数据)
1881 0
|
存储 API Android开发
Android接收短信-createFromPdu
Android接收短信-createFromPdu
147 0
|
Java 开发工具 Android开发
RK3128 Android 7 BOX SDK 应用无法接收广播自启 + 眠休不黑屏问题
RK3128 Android 7 BOX SDK 应用无法接收广播自启 + 眠休不黑屏问题
466 0
|
Java Android开发
Android 7.1 多次重启后BOOT_COMPLETED广播接收变慢
Android 7.1 多次重启后BOOT_COMPLETED广播接收变慢
327 0
下一篇
无影云桌面