实例化类中的变量而不是onCreate()错误?

实例化类中的变量而不是onCreate()错误?,第1张

概述Android中的这种结构有问题吗?classAextendsActivity{privateObjectmyObject=newObject();@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//myObject=newObject();}}因为稍后在某些时候,由于myObject为null,所以我得到了(有时还不能重

Android中的这种结构有问题吗?

class A extends Activity {private Object myObject = new Object();@OverrIDeprotected voID onCreate(Bundle savedInstanceState) {    //myObject = new Object();}

}

因为稍后在某些时候,由于myObject为null,所以我得到了(有时还不能重现)异常.我不知道是否是因为我必须在onCreate中进行初始化.

编辑:其他详细信息:

> myObject的实际类是List< Object>. (其中Object是特定于域的类型)
>稍后在活动中的某个时刻,我将myObject存储为“参数传递程序”类的静态字段,并启动其他活动(因为我避免实现Parcelable.因为这是好是坏做法,在此不予讨论,除非导致我的错误).在另一个活动中,我选择myObject.那里(有时)为空.

编辑2:如果我将对它的引用存储为参数传递者类(独立的专用类)的静态字段,则我不明白为什么该对象变为null.这就是垃圾收集的工作原理,对的,当不再引用对象时,它将删除.因此,由于我有一个静态引用,因此不应删除该对象.根据这种想法,如果正确,则问题应该出在其他地方.

解决方法:

当您开始一个新的活动时,您的旧活动将继续进行以进行可能的垃圾收集(包括其中实例化的任何类,包括您的参数传递器类),因此您的对象不一定可用(这就是为什么您看到间歇性的原因)失败.).

我看到两个选择:

1)将您的意图传递到捆绑软件中,以开始新的活动.当您尝试避免这种情况时,可能不是您的最佳选择.

2)扩展Application类并将对象存储在其中.

编辑

我认为对此SO Question的可接受答案可能会解决您的问题(并解释实际发生的情况).

总结

以上是内存溢出为你收集整理的实例化类中的变量而不是onCreate()错误?全部内容,希望文章能够帮你解决实例化类中的变量而不是onCreate()错误?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1073514.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存