(android) 当Activity跳转进入其他的Activity之后,原Activity中的成员变量的问题

例如 Activity A 中成员变量里有一个JavaBean对象数据。而此时,从Activity A进入了Activity B,那么这个时候Activity A中保存的这个数据对象是否会被销毁掉?如果从Activity B在进入C呢?

我的理解是只要Activity A的示例没有被Android 系统销毁,那么那的成员变量就应该一直存在才对。但是现在出现了这样的一个情况就是当在B或C中调用A中的函数使用这个数据时出项空指针的问题。所以想问问Activity的成员变量在Activity的生命周期中的这个问题。

我的操作不需要将这个数据类传给其他的Activity,在但是在使用时,发现这个Activity的类成员会变的不可靠,特别是在这个ActivitystartActivity进入其他页面之后。如果我把这个数据放到Application类中,是不是可以解决这个问题?

这个问题问的好,我也没有好好考虑过这个问题,应该涉及java内部机制,内存模型的东西
放在application是没有问题的,但是不是很推荐这样做。
我的做法是放到cache里,且get后,直接clear掉了。因为我的考虑是,很多场景下,值我只需要用一次,放到cache里,用完就扔了

On stop是不会销毁的,上代码吧

不能一概而论吧,有些定制的手机会做一些人性化的操作,帮你“记住”这些变量。

在Activity被切换到后台之后,内存不足的时候,会被销毁。。。
如果想让你的那个JavaBean对象在其它Activity实例里都可以使用,为什么不直接把引用传过去,或者做一个缓存来保持这些引用

application可以保存。一般切换到B或C时,A进入on stop阶段,是不会销毁实例的。也有可能资源不足,系统给destroy了。

第一种方案是放到application里面,application的生命周期长,不会造成这种情况;第二种方案转成字符串存到sharepreferences或者sdcard里面,可以达到不同页面共享的目的。推荐使用第二种方案

那些数据回收与否,是由回收机制决定。不过你可以在onSaveInstance中使用Bundle存储数据。

楼主这个问题我也碰到过,我在Stackoverflow上搜寻过答案并且整理在这里:http://blog.csdn.net/max2005/article/details/46599119
注意仅供参考,误导莫怪。

发表评论

电子邮件地址不会被公开。 必填项已用*标注