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

b87936260 2013-09-10 01:43:22
在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这个变量?
...全文
181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
荒颜 2013-09-11
  • 打赏
  • 举报
回复
引用 4 楼 b87936260 的回复:
[quote=引用 1 楼 tanwei4199 的回复:] 理论上是不会的 因为哪怕你程序没运行 但是收到这个广播的话 系统启会动receiver 这时就相当于有初始化的过程的 但是实际中还是遇到了一些类似的问题 比如 我的广播已经收到了 但是系统会报错 unable to start receiver 至今不知道什么原因 还一个就是从这种广播里启动service 经常出现service收到的intent为空(即startService(Intent)里的intent传到service报空了) 源码真心不想看 也不清楚怎么回事
因为a是static的,应该是在应用程序启动时候加载到内存,当应用程序结束的时候被释放掉。[/quote] 收到广播有启动receiver的过程 所以没关系的 TAG常量照样没报空嘛
b87936260 2013-09-11
  • 打赏
  • 举报
回复
引用 3 楼 newstarao 的回复:
肯定是没了,你不会是想在这里记录app的打开次数吧?
额 做什么不重要吧,问题是为什么会没了?
b87936260 2013-09-11
  • 打赏
  • 举报
回复
引用 2 楼 guoyoulei520 的回复:
不会报空指针
为啥啊,广播接收器生命周期比应用本身还长,而应用里面static变量生命周期应该等同于应用本身的吧。现在感觉自己啥也不会了
b87936260 2013-09-11
  • 打赏
  • 举报
回复
引用 1 楼 tanwei4199 的回复:
理论上是不会的 因为哪怕你程序没运行 但是收到这个广播的话 系统启会动receiver 这时就相当于有初始化的过程的 但是实际中还是遇到了一些类似的问题 比如 我的广播已经收到了 但是系统会报错 unable to start receiver 至今不知道什么原因 还一个就是从这种广播里启动service 经常出现service收到的intent为空(即startService(Intent)里的intent传到service报空了) 源码真心不想看 也不清楚怎么回事
因为a是static的,应该是在应用程序启动时候加载到内存,当应用程序结束的时候被释放掉。
newstarao 2013-09-10
  • 打赏
  • 举报
回复
肯定是没了,你不会是想在这里记录app的打开次数吧?
凉凉二点凉 2013-09-10
  • 打赏
  • 举报
回复
不会报空指针
荒颜 2013-09-10
  • 打赏
  • 举报
回复
理论上是不会的 因为哪怕你程序没运行 但是收到这个广播的话 系统启会动receiver 这时就相当于有初始化的过程的 但是实际中还是遇到了一些类似的问题 比如 我的广播已经收到了 但是系统会报错 unable to start receiver 至今不知道什么原因 还一个就是从这种广播里启动service 经常出现service收到的intent为空(即startService(Intent)里的intent传到service报空了) 源码真心不想看 也不清楚怎么回事

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧