繁体   English   中英

Java静态变量变为null

[英]Java Static Variable becomes null

我有一个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系统对何时清除应用程序有最终决定权,只保留静态变量中非常短的交互所需的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM