我最近开始使用Android编程并遇到了很多问题,但是除了这个之外我已经能够解决所有这些问题了。为了简单起见,我将总结一下正在发生的事情。
在MainActivity.onCreate()中的super.oncreate()调用之前和之后放置Logcat语句,我可以看到super.onCreate()的某些部分将ArrayList中的先前正确值更改为null。
如果它很重要,这个静态ArrayList包含自定义(可序列化)对象,每个对象都包含一个自定义(可序列化)对象的ArrayList,其值本身为null。
如果这令人困惑,我会尝试用伪代码表示它:
static ArrayList<CustomObject>
CustomObject{
ArrayList<OtherCustomObject> //values of this ArrayList become null
}
当然,如果需要更多信息,我会尽量提供。
答案 0 :(得分:2)
无论为什么会发生这种情况,将这样的列表存储在一个静态变量中并期望它存在(没有计划重新创建)并不是一个好主意,因为系统可能会决定在你的进程中终止你的进程它的记忆力很低。当用户尝试重新输入您的应用程序时,系统会尝试重新创建活动时,您将具有空值。
如果数据很重要,请将其写入文件(您说它已经是Serializable)并在启动主要活动时读取它。
答案 1 :(得分:1)
静态数据一直持续到
在您描述的情况下,这些都不会发生。 VM已启动,进程正在运行,Dalvik不会卸载类。请提供其他信息以重新解决问题。