当前位置:编程学习 > wap >>

广播接收器里的生命周期问题

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

因为a是static的,应该是在应用程序启动时候加载到内存,当应用程序结束的时候被释放掉。 --------------------编程问答--------------------
引用 2 楼 guoyoulei520 的回复:
不会报空指针

为啥啊,广播接收器生命周期比应用本身还长,而应用里面static变量生命周期应该等同于应用本身的吧。现在感觉自己啥也不会了 --------------------编程问答--------------------
引用 3 楼 newstarao 的回复:
肯定是没了,你不会是想在这里记录app的打开次数吧?

额 做什么不重要吧,问题是为什么会没了? --------------------编程问答--------------------
引用 4 楼 b87936260 的回复:
Quote: 引用 1 楼 tanwei4199 的回复:

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

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

收到广播有启动receiver的过程  所以没关系的   TAG常量照样没报空嘛
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,