广播接收器里的生命周期问题
在Android里面定义一个类继承BroadcastReceiver
public class BootReceiver extends BroadcastReceiver {
public static ArrayList<String> a = new ArrayList<String>();
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, a.toString(), 0).show();
}
}
该广播接收器在Manifest里面注册,请问上面的代码会不会出现空指针?
当应用程序结束的时候,会不会回收a这个变量? broadcastreceiver 指针 android --------------------编程问答-------------------- 理论上是不会的 因为哪怕你程序没运行 但是收到这个广播的话 系统启会动receiver 这时就相当于有初始化的过程的 但是实际中还是遇到了一些类似的问题
比如 我的广播已经收到了 但是系统会报错 unable to start receiver 至今不知道什么原因
还一个就是从这种广播里启动service 经常出现service收到的intent为空(即startService(Intent)里的intent传到service报空了) 源码真心不想看 也不清楚怎么回事 --------------------编程问答-------------------- 不会报空指针
--------------------编程问答-------------------- 肯定是没了,你不会是想在这里记录app的打开次数吧? --------------------编程问答--------------------
因为a是static的,应该是在应用程序启动时候加载到内存,当应用程序结束的时候被释放掉。 --------------------编程问答--------------------
为啥啊,广播接收器生命周期比应用本身还长,而应用里面static变量生命周期应该等同于应用本身的吧。现在感觉自己啥也不会了 --------------------编程问答--------------------
额 做什么不重要吧,问题是为什么会没了? --------------------编程问答--------------------
收到广播有启动receiver的过程 所以没关系的 TAG常量照样没报空嘛
补充:移动开发 , Android