为什么我的android应用程序的静态变量有时返回null?

为什么我的android应用程序的静态变量有时返回null?,android,sharedpreferences,static-variables,Android,Sharedpreferences,Static Variables,我试图从SharedReferences中获取值,并将其存储在静态变量中。问题是,有时我从静态变量中获取空值,但SharedReferences具有空值。 我已通过此过程存储了值: SharedPreferences sp = u.returnShare(); SharedPreferences.Editor editor = sp.edit(); StaticVariables.userId = sp.getString("UserId", "default"); 不要使

我试图从SharedReferences中获取值,并将其存储在静态变量中。问题是,有时我从静态变量中获取空值,但SharedReferences具有空值。 我已通过此过程存储了值:

 SharedPreferences sp = u.returnShare();
    SharedPreferences.Editor editor = sp.edit();

    StaticVariables.userId = sp.getString("UserId", "default");

不要使用静态变量,这是不好的做法。Android可以随时破坏应用程序的进程,然后根据需要通过重新创建活动来重新创建它。如果您在“第一个”活动中创建静态变量,那么当第二个或第三个活动首先启动时,它将不会被初始化。

静态变量在android中不是一个好的长期存储。系统可能会在应用程序处于后台的任何时候(例如,当其他任务需要内存时)终止应用程序。当应用程序重新启动时,存储在静态变量中的所有值都将消失。

那么我该怎么办?我是否每次都能从共享参考或其他更好的想法中获得价值?那我该怎么办?我应该每次都从SharedReference或其他更好的方法中获取值吗?将静态变量视为缓存,如果它为null,则需要再次从sharedPreference获取if。