请教关于安卓静态变量的问题

cslzh1231512 2014-04-23 10:02:24
请问以下两种情况,静态变量是否有可能被回收,变成空指针
1、static final String a = "123";
请问a是否始终等于"123"
2、有类A:
public class A {
private String a;
public String GetA(){
return a;
}
public A(String a){
this.a=a;
}
}
定义静态变量
static final A b=new A("123");
请问这个静态b,会不会被回收变成null?b.GetA(),是否始终等于"123"

这方面概念一直一知半解的,而且也不好测试,所以请教一下大家
...全文
162 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cslzh1231512 2014-04-24
  • 打赏
  • 举报
回复
引用 2 楼 heaimnmn 的回复:
java基础,之所以用static就是就是固定分配空间,避免其被收回,,,,
安卓的情况有点特殊:运行某个程序,然后长时间待机,再开时,之前的程序的静态变量可能会变成null,这个也是我最近才发现的; 百度了一下,关于这个问题也是有不少人讨论的,比如这篇文章 http://blog.csdn.net/zhangyue0503/article/details/7614944 然后,网上的建议基本都是在自定义Application里存储静态变量 但是,我觉得,这样代码太杂乱了, 就想能不能怎么改进一下(为了编码更方便) 为此我想弄清楚,什么情况下静态变量会被置空;final的变量会不会也变成null
erytbc 2014-04-24
  • 打赏
  • 举报
回复
静态变量在类被加载的时候分配内存,在进程结束的时候会被销毁。再进程运行的时候,只要你的static变量没有被销毁也没有置null,则不会被GC回收。
哎,真难 2014-04-24
  • 打赏
  • 举报
回复
java基础,之所以用static就是就是固定分配空间,避免其被收回,,,,
atlasGS 2014-04-23
  • 打赏
  • 举报
回复
标记

80,351

社区成员

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

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