在Android里面定义一个类继承BroadcastReceiverpublic 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

解决方案 »

  1.   

    理论上是不会的   因为哪怕你程序没运行   但是收到这个广播的话  系统启会动receiver  这时就相当于有初始化的过程的   但是实际中还是遇到了一些类似的问题
     比如  我的广播已经收到了   但是系统会报错  unable to start receiver  至今不知道什么原因
       还一个就是从这种广播里启动service  经常出现service收到的intent为空(即startService(Intent)里的intent传到service报空了)    源码真心不想看  也不清楚怎么回事
      

  2.   

    肯定是没了,你不会是想在这里记录app的打开次数吧?
      

  3.   

    因为a是static的,应该是在应用程序启动时候加载到内存,当应用程序结束的时候被释放掉。
      

  4.   

    为啥啊,广播接收器生命周期比应用本身还长,而应用里面static变量生命周期应该等同于应用本身的吧。现在感觉自己啥也不会了
      

  5.   

    因为a是static的,应该是在应用程序启动时候加载到内存,当应用程序结束的时候被释放掉。
    收到广播有启动receiver的过程  所以没关系的   TAG常量照样没报空嘛