最近
在安卓开发的时候,由于在广播类里面,不恰当的定义,导致了栈溢出的问题,因此记录以下
首先,自定义广播接收者,需要继承BroadcastReceiver这个类,然后实现里面的onReceive方法,如下图:
网络异常,图片无法展示
|
这个时候,需要注意的是,关于这个类里面,有关变量的定义问题。本次项目中,遇到的是Handler的定义,下面看以下具体的操作过程:
MainActivity布局:
网络异常,图片无法展示
|
MainActivity.java
网络异常,图片无法展示
|
广播接收者:
网络异常,图片无法展示
|
启动应用,观察log:
网络异常,图片无法展示
|
可以看到,每次接收广播后,handler的内存地址都发生了改变,所以onReceive()方法,是会每次执行,都会创建一个对象的,实际使用中, 就要注意相关变量,是否应该修饰为static或者使用其他修饰,防止因某些变量增加过多,导致内存的频繁gc或者栈堆溢出。
that's all