android的全局变量被置为null的问题。设定了继承自application的全局myApp类,在其它对象中引用时myApp.UserId,经常被置为nul

yjm919 2012-06-26 11:02:30
似乎是被gc回收了,但是从原理上讲,myApp对象在整个程序退出前,不会被gc的。请给些思路。
...全文
558 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
开发者_android 2014-10-30
  • 打赏
  • 举报
回复
引用 8 楼 dalor 的回复:
赋值后,除非你对它进行别的运算后,改变了它的值,可能是对它的引用改变了,没有直接使用这个变量. 如:定义 类A:a=1; 类B:b=A.a;b=2; 类C:A.a的值就是2了;
类B:b=A.a;b=2;
开发者_android 2014-10-30
  • 打赏
  • 举报
回复
赋值后,除非你对它进行别的运算后,改变了它的值,可能是对它的引用改变了,没有直接使用这个变量. 如:定义 类A:a=1; 类B:A.a=b;b=2; 类C:A.a的值就是2了;
开发者_android 2014-10-30
  • 打赏
  • 举报
回复
引用 2 楼 yjm919 的回复:
[Quote=引用 1 楼 的回复:] 如果你的“其它对象”分别在不同的进程里,你需要在每个进程初始化时分别对其application对象自定义变量进行初始化。因为他们访问的不是同一个application对象。 如果你的对象全都在一个进程里,请检查你的赋值代码,这个帮不了你了。 [/Quote] 谢谢。 赋值只有一次。后面就是在activity里调用。而且开始这个值正常,运行一段时间后被null。
这样的话,如果是一个常量,那就定义成static.
哎,真难 2014-10-30
  • 打赏
  • 举报
回复
感觉不是被GC回收掉,你的代码怎么写的
阔活洵信 2014-10-30
  • 打赏
  • 举报
回复
噢。。。我也遇到了这个问题。。纠结了大半天之后,我鬼使神差的在全局变量前面加了个static,然后就解决了。。。。我到现在还没想清楚是为什么。。。。
yjm919 2012-06-27
  • 打赏
  • 举报
回复
与其同时赋值的另一个变量一直正常,那个变量String是几个字节,这个一段时间被null的变量String是32个字节.是在全局的对象中的.两个变量只是开始登录后台时被赋值,后边都是读取.呵呵.看样只能改用sharedPreferences了.
yjm919 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
如果你的“其它对象”分别在不同的进程里,你需要在每个进程初始化时分别对其application对象自定义变量进行初始化。因为他们访问的不是同一个application对象。
如果你的对象全都在一个进程里,请检查你的赋值代码,这个帮不了你了。
[/Quote]
谢谢。
赋值只有一次。后面就是在activity里调用。而且开始这个值正常,运行一段时间后被null。
一刀 2012-06-26
  • 打赏
  • 举报
回复
如果你的“其它对象”分别在不同的进程里,你需要在每个进程初始化时分别对其application对象自定义变量进行初始化。因为他们访问的不是同一个application对象。
如果你的对象全都在一个进程里,请检查你的赋值代码,这个帮不了你了。
一刀 2012-06-26
  • 打赏
  • 举报
回复
一般情况下GC不会回收你仍在使用的资源。

首先确定你的所有的activity没有在AndroidManifest.xml里用android:process 标签新建进程
然后,你可以调试一下,在所有对这变量进行赋值的地方进行监控,以判断代码没有给这个变量一个NULL值

PS:请确认你没有新开进程,这一点很重要哦

80,360

社区成员

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

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