例如 Activity A
中成员变量里有一个JavaBean
对象数据。而此时,从Activity A
进入了Activity B
,那么这个时候Activity A
中保存的这个数据对象是否会被销毁掉?如果从Activity B
在进入C
呢?
我的理解是只要Activity A
的示例没有被Android
系统销毁,那么那的成员变量就应该一直存在才对。但是现在出现了这样的一个情况就是当在B或C中调用A
中的函数使用这个数据时出项空指针的问题。所以想问问Activity
的成员变量在Activity
的生命周期中的这个问题。
我的操作不需要将这个数据类传给其他的Activity
,在但是在使用时,发现这个Activity
的类成员会变的不可靠,特别是在这个Activity
上startActivity
进入其他页面之后。如果我把这个数据放到Application
类中,是不是可以解决这个问题?
在Activity被切换到后台之后,内存不足的时候,会被销毁。。。
如果想让你的那个JavaBean对象在其它Activity实例里都可以使用,为什么不直接把引用传过去,或者做一个缓存来保持这些引用
这个问题问的好,我也没有好好考虑过这个问题,应该涉及java内部机制,内存模型的东西
放在application是没有问题的,但是不是很推荐这样做。
我的做法是放到cache里,且get后,直接clear掉了。因为我的考虑是,很多场景下,值我只需要用一次,放到cache里,用完就扔了
application可以保存。一般切换到B或C时,A进入on stop阶段,是不会销毁实例的。也有可能资源不足,系统给destroy了。
第一种方案是放到application里面,application的生命周期长,不会造成这种情况;第二种方案转成字符串存到sharepreferences或者sdcard里面,可以达到不同页面共享的目的。推荐使用第二种方案
不能一概而论吧,有些定制的手机会做一些人性化的操作,帮你“记住”这些变量。
楼主这个问题我也碰到过,我在Stackoverflow上搜寻过答案并且整理在这里:http://blog.csdn.net/max2005/article/details/46599119
注意仅供参考,误导莫怪。
On stop是不会销毁的,上代码吧
那些数据回收与否,是由回收机制决定。不过你可以在onSaveInstance中使用Bundle存储数据。