Java静态变量变为null

Java静态变量变为null,第1张

概述我有一个androidjava类,其中一个静态实例保存用户的信息.但是,在一些用户使用我的应用程序的极少数情况下,该静态实例中的一个变量在一段时间后变为null.这个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静态变量变为null全部内容,希望文章能够帮你解决Java静态变量变为null所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1101860.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存