一尘不染

在Android中使用静态变量

java

在android中,推荐使用静态变量吗?例如,用Java实现Singleton模式,我通常这样做:

private static A the_instance;
public static A getInstance() {
    if (the_instance == null) {
       the_instance = new A();
    }
    return the_instance;
}

此外,Android JVM何时可以清除此漏洞?


阅读 285

收藏
2020-03-12

共1个答案

一尘不染

static字段会整体附加到Class实例,而实例又附加到ClassLoader加载了类的。the_instance整个ClassLoader回收时将被卸载。我90%确信这会在Android销毁该应用程序时发生(不是在它进入后台或暂停但完全关闭时发生)。

因此,只要你的应用程序运行,就可以将其视为生存。Singleton是个好主意吗?人们有不同的看法。我个人认为,适当使用它会很好。我认为答案在Android上不会有太大变化。内存使用本身不是问题。如果你需要在内存中加载一堆东西,无论你是否将数据封装在Singleton中,这要么是问题,要么不是问题。

2020-03-12