静态变量对生命周期垃圾收集是否安全?

时间:2015-04-19 13:15:46

标签: android

如果有这样的课程

public static class Globals {
    public static string MyString;

    static Globals() {
        MyString = "example";
    }
}
只要应用程序进程正在运行(可能在后台),

MyString总是“示例”吗?

- 编辑 -

假设用户未更改MyString。

2 个答案:

答案 0 :(得分:2)

这是public,非final字段,所以不,可能会有各种代码更改其值。

但是,是的,如果你不改变价值,它将保持不变。初始化块在加载类本身时运行一次,并且字段不会以某种方式神奇地丢失其值。 (即使该类应该被卸载,我不确定在Android上是否会发生,如果该类应该再次加载,该字段将被重新初始化)

答案 1 :(得分:1)

是的,只要该过程存在。请注意您保留的引用以避免内存泄漏。见:

Lifetime of a static variable in AndroidStatic singleton lifetime in Android

您也可以为此目的扩展Application类。