Java静态变量变为空
我有一个带有静态实例的android
java类,其中包含一个用户信息。但是,在极少数情况下,当用户使用我的应用程序时,该静态实例中的变量之一会在一段时间后变为null。该Java类是全局的(未附加到任何活动)。是什么原因造成的?
编辑:该变量永远不会更改,除非在应用程序启动期间。我已经检查过调用它的函数永远不会被调用一次以上(adb
logcat证明了当我添加一条日志表明正在被调用时)。
代码是这样的:
class UserCore{
class UserData
{
int ID;
string Name;
}
public UserData User;
public static UserCore Instance = new UserCore();
public void Login()
{
Log.d("User", "Logging in");
new Throwable().printStackTrace();
User = null;
//Fetch user data
User = new UserData();
User.ID = ...
User.Name = ...
}
....
}
回答:
如果用户让手机进入睡眠状态并且系统需要或清除内存,通常会发生这种情况。最好将需要较长时间的信息保留在磁盘缓存中,而不是仅将其保留在静态变量中。如您所知,Android系统对于何时清除应用程序拥有最终决定权,请仅将静态交互中需要非常短时间交互所需的数据保留在静态变量中。
以上是 Java静态变量变为空 的全部内容, 来源链接: utcz.com/qa/418170.html