我有一个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 = ... } .... }
小智.. 17
如果用户让手机进入睡眠状态并且系统需要或清除内存,通常会发生这种情况.最好将需要较长时间的信息保存到磁盘缓存中,而不是将其保存在静态变量中.如您所知,Android系统对何时清除应用程序有最终决定权,只保留静态变量中非常短的交互所需的数据.
如果用户让手机进入睡眠状态并且系统需要或清除内存,通常会发生这种情况.最好将需要较长时间的信息保存到磁盘缓存中,而不是将其保存在静态变量中.如您所知,Android系统对何时清除应用程序有最终决定权,只保留静态变量中非常短的交互所需的数据.