Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
静态应用程序变量的生存期-android_Android_Lifetime_Static Variables_Object Lifetime_Android Application Class - Fatal编程技术网

静态应用程序变量的生存期-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没有。这对我来说很奇怪。为什么可能呢?