静态应用程序变量的生存期-android
我在自定义应用程序类中定义了一个静态变量。大概是这样的:静态应用程序变量的生存期-android,android,lifetime,static-variables,object-lifetime,android-application-class,Android,Lifetime,Static Variables,Object Lifetime,Android Application Class,我在自定义应用程序类中定义了一个静态变量。大概是这样的: public class App extends Application{ ... public static Object var; ... @Override public void onCreate() { var = new Object(); } } 在我的应用程序活动期间,我需要读取App.var值,但有时它似乎为空。 在我的应用程序的生命周期中,我的应用程序
public class App extends Application{
...
public static Object var;
...
@Override
public void onCreate() {
var = new Object();
}
}
在我的应用程序活动期间,我需要读取App.var值,但有时它似乎为空。在我的应用程序的生命周期中,我的应用程序类的静态变量是否可能被销毁(因为GC或其他原因)?如果是,原因是什么?不要为此目的使用
Application
对象-:“注意:通常不需要对应用程序进行子类化。在大多数情况下,静态单例可以以更模块化的方式提供相同的功能。”正如@pskink所说,如果应用程序进程被终止,您不需要为此目的使用应用程序类,如果你把应用程序放在后台太长时间,这几乎毫无疑问会发生,你的单例将被重新创建,因此你的var将被重新设置为默认值。在您的情况下,它是空的。为此,我建议使用共享偏好。使用应用程序有一些好处。看看这个:看,Dianne Hackborn,应用程序
类的管理员说:“应用程序作为可以派生的东西存在的唯一原因是,在1.0之前的开发过程中,我们的一位应用程序开发人员不断地对我进行窃听,告诉我他们需要一个顶级应用程序对象来派生,这样他们才能拥有一个更“正常”的应用程序模型,我最终屈服了。在上面的g+帖子中,我读到android应用程序可能是GCed,但Singleton没有。这对我来说很奇怪。为什么这是可能的?不要为此目的使用Application
object-:“注意:通常不需要对应用程序进行子类化。在大多数情况下,静态单例可以以更模块化的方式提供相同的功能。“正如@pskink所说,如果应用程序进程被终止(如果你将应用程序留在后台太长时间,这种情况几乎毫无疑问会发生),你的单例将被重新创建,因此你的var将被重新设置为默认值。在您的情况下,它是空的。为此,我建议使用共享偏好。使用应用程序有一些好处。看看这个:看,Dianne Hackborn,应用程序
类的管理员说:“应用程序作为可以派生的东西存在的唯一原因是,在1.0之前的开发过程中,我们的一位应用程序开发人员不断地对我进行窃听,告诉我他们需要一个顶级应用程序对象来派生,这样他们才能拥有一个更“正常”的应用程序模型,我最终屈服了。在上面的g+帖子中,我读到android应用程序可能是GCed,但Singleton没有。这对我来说很奇怪。为什么可能呢?