gpt4 book ai didi

java - super.onCreate() 改变了我的变量

转载 作者:行者123 更新时间:2023-11-29 05:31:46 24 4
gpt4 key购买 nike

我最近开始Android编程,遇到了很多问题,但除了这个以外,其他都解决了。为了简单起见,我将尝试总结正在发生的事情。

  • 我有一个 MainActivity,它有一个静态 ArrayList
  • 我进入一个子 Activity ,在其中更改 MainActivity 的 ArrayList 的值
  • 我离开子 Activity ,进入MainActivity
  • 我检查了这个 ArrayList 的值,它现在包含空值

在 MainActivity.onCreate() 中的 super.oncreate() 调用前后放置 Logcat 语句,我可以看到 super.onCreate() 的某些部分将 ArrayList 中先前的正确值更改为 null。

以防万一,这个静态 ArrayList 包含自定义(可序列化)对象,每个对象都包含一个自定义(可序列化)对象的 ArrayList,其值本身为 null。

如果这令人困惑,我将尝试用伪代码表示它:

static ArrayList<CustomObject>

CustomObject{
ArrayList<OtherCustomObject> //values of this ArrayList become null
}

当然,如果需要更多信息,我会尽量提供。

最佳答案

无论您的情况为何发生这种情况,将这样的列表存储在静态变量中并期望它存在(没有计划重新创建它)都不是一个好主意,因为系统可能会决定在以下情况下终止您的进程它的内存不足。当用户尝试重新进入您的应用程序时,您将拥有空值,因为系统会尝试重新创建 Activity 。

如果数据很重要,把它写到一个文件(你说它已经是可序列化的)并在你开始主要 Activity 时读取它。

关于java - super.onCreate() 改变了我的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com