15

我有一个带有静态实例的 android java 类,其中包含有关用户的信息。但是,在用户使用我的应用程序的极少数情况下,该静态实例中的一个变量会在一段时间后变为空。这个 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 = ...
    }
    ....
}
4

1 回答 1

19

如果用户让手机进入睡眠状态并且系统需要或清除内存,这通常会发生。最好将您需要较长时间的信息保存到磁盘缓存中,而不是将其保存在静态变量中。如您所知,Android 系统对何时清除应用程序有最终决定权,您只需将非常短的交互所需的数据保存在静态变量中。

于 2013-05-24T13:34:55.787 回答