Java onCreate()更改我的变量
我最近开始了Android编程,遇到了很多问题,但除了这个问题之外,其他问题都解决了。为了简单起见,我将尝试总结正在发生的事情Java onCreate()更改我的变量,java,android,null,super,oncreate,Java,Android,Null,Super,Oncreate,我最近开始了Android编程,遇到了很多问题,但除了这个问题之外,其他问题都解决了。为了简单起见,我将尝试总结正在发生的事情 我有一个MainActivity,它有一个静态数组列表 我进入一个子活动,在其中更改MainActivity的ArrayList的值 我离开子活动,进入MainActivity 我检查了这个ArrayList的值,现在它包含空值 将Logcat语句放在MainActivity.oncreate()中的super.oncreate()调用之前和之后,我可以看到supe
- 我有一个MainActivity,它有一个静态数组列表
- 我进入一个子活动,在其中更改MainActivity的ArrayList的值
- 我离开子活动,进入MainActivity
- 我检查了这个ArrayList的值,现在它包含空值
static ArrayList<CustomObject>
CustomObject{
ArrayList<OtherCustomObject> //values of this ArrayList become null
}
静态数组列表
自定义对象{
ArrayList//此ArrayList的值变为null
}
当然,如果需要更多的信息,我会尽力提供更多的信息。静态数据会一直存在到
在您描述的案例中,这些都没有发生。VM已启动,进程正在运行,Dalvik不会卸载类。请提供其他信息以重新处理该问题。无论您的情况下为什么会发生这种情况,在静态变量中存储这样的列表并期望它在那里(没有计划重新创建它)都不是一个好主意,因为系统可能会在内存不足时决定终止您的进程。当用户尝试重新输入你的应用程序时,当系统尝试重新创建活动时,你将有空值
如果数据很重要,请将其写入一个文件(您说过该文件已可序列化),并在启动主活动时读取该数据。这可能有助于您处理多个线程吗?(在这种情况下需要使用volatile)。请发布一些更改值和启动活动方式的代码。@ramaral他不需要保存活动状态,这是一个静态变量。另一个想法是,由于某种原因,整个过程正在被破坏和重新启动,但是无法从发布的内容中得知。如果您没有显式地将这些值设置为null,那么它应该可以正常工作,可能是在其他活动转到onDestroy()时。。活动代码将在这方面对我们有很大帮助,否则我认为我们帮不了太多….(现在在手机上,在电脑上时会挖掘参考资料)同意。除非您说“将其写入文件”-中的“outState”捆绑包不是最自然的选择吗?取决于即使用户退出活动(或手机重新启动等),数据是否需要持久化。如果系统破坏并重新创建进程,则outState捆绑包将继续存在,但在我刚才提到的情况下不会。