gpt4 book ai didi

android - android是否保存静态变量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:18 25 4
gpt4 key购买 nike

我正在编写一个简单的 android 应用程序,它基本上是对 android 文档中可用的 fragment 演示的修改。在应用程序中,有一个名为 Ipsum.java 的文件,其中包含一个名为 Headlines 的静态字符串 ArrayList。

在主要 Activity 的 onCreate() 方法中,我有以下代码将一些元素添加到数组列表中。

    if (savedInstanceState == null){
Ipsum.Headlines.add("String 1 ");
Ipsum.Headlines.add("String 2");
}

savedInstanceState 是系统传递给方法的 Bundle,如果应用程序正在从某个非 Activity 状态恢复。逻辑是,如果 savedInstanceState 为 null,则应用不会恢复,而是作为新实例启动。

如果我使用“主页”按钮离开应用程序并重新进入应用程序,则 arrayList 仅包含两个元素:“字符串 1”和“字符串 2”。 (这是期望的行为)

但是,如果我使用后退按钮离开应用程序,然后重新进入应用程序,“字符串 1”和“字符串 2”元素将再次添加。该数组然后有 4 个元素。

String 1
String 2
String 1
String 2

(可以看到arrayList的内容,因为它们是用来填充一个listView的)当按下后退按钮时,应用程序似乎正在存储静态数组列表的内容。当应用程序重新启动时,Bundle 不会传递给 onCreate() 方法。有人可以根据应用程序生命周期解释这里发生的事情吗?

最佳答案

希望对您有帮助:

让我们从一些背景知识开始:当您启动一个应用程序时会发生什么?

操作系统启动一个进程并为其分配一个唯一的进程ID并分配一个进程表。一个进程启动一个DVM(Dalvik VM)实例;每个应用程序都在 DVM 中运行。DVM 管理类加载卸载、实例生命周期、GC 等。

静态变量的生命周期:静态变量在类被 JVM 加载时存在,在类卸载时消亡。

因此,如果您创建一个 android 应用程序并初始化一个静态变量,它将保留在 JVM 中,直到发生以下情况之一:
1.类被卸载
2. JVM关闭
3.进程消亡

请注意,当您切换到另一个应用程序的不同 Activity 时,静态变量的值将保持不变,并且上述三种情况都不会发生。如果发生上述三种情况中的任何一种,静态将失去其值(value)。

有关更多详细信息:阅读此链接中 Samuh 的答案... Click Here

关于android - android是否保存静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18050489/

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