在安卓中使用静态变量
在 Android 中,使用静态变量是推荐的做法吗?例如,在Java中实现单例模式,我通常这样做:
private static A the_instance;
public static A getInstance() {
if (the_instance == null) {
the_instance = new A();
}
return the_instance;
}
另外,Android JVM何时会清理它?
在 Android 中,使用静态变量是推荐的做法吗?例如,在Java中实现单例模式,我通常这样做:
private static A the_instance;
public static A getInstance() {
if (the_instance == null) {
the_instance = new A();
}
return the_instance;
}
另外,Android JVM何时会清理它?
static
字段作为一个整体附加到实例,而整个实例又附加到加载类的 实例。 当整个回收时将被卸载。我90%确定当Android破坏应用程序时会发生这种情况(而不是当它进入后台或暂停,但完全关闭时)。Class
ClassLoader
the_instance
ClassLoader
因此,只要你的应用运行,就可以将其视为存在。Singleton是一个好主意吗?人们有不同的看法。我认为如果使用得当,我自己也没关系。我不认为答案在Android上变化太大。内存使用本身不是问题;如果您需要在内存中加载一堆内容,那么无论您是否将数据封装在单例中,这要么是问题,要么不是问题。
我认为静态变量是可以的。
这是Android文档所说的:
http://developer.android.com/guide/appendix/faq/framework.html
如何在单个应用程序中的活动/服务之间传递数据?
公共静态字段/方法
使数据可跨活动/服务访问的另一种方法是使用公共静态字段和/或方法。您可以从应用程序中的任何其他类访问这些静态字段。要共享对象,创建对象的活动将静态字段设置为指向此对象,而任何其他想要使用此对象的活动仅访问此静态字段。