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

2020-01-21  本文已影响0人  motosheep

最近

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

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

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

MainActivity布局:

MainActivity.java

广播接收者:

启动应用,观察log:

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

that's all

上一篇下一篇

猜你喜欢

热点阅读