在我的应用中,我使用静态变量来保存当前用户ID。有一个很难重现这个用户ID的错误就是消失了。虽然它可能与应用程序加载期间如何设置此变量的错误有关(我仍然无法在受控环境中可靠地重现这种情况,所以我不确定究竟发生了什么),我正在开始认为这与从静态变量回收内存的方式有关(我以前没有考虑过)。
那么,我的静态变量何时才会消失?
任何能让我的理解更加清晰的事情都将受到赞赏。
谢谢。
答案 0 :(得分:1)
这是超级,超级老的问题,但我正在撰写一篇博文并提到看到这一点。我不知道你是否还在使用这个应用程序(可疑),或者如果你仍然看到这个问题(也有疑问)。我的猜测是你在应用程序启动的Activity中设置了这些静态。当然,如果您的应用程序关闭,然后重新启动,您将无法完成该活动。
延迟加载静态或在自定义Application对象中初始化它们通常会解决这个问题。
我已经对“低记忆中移除的静力学”这个想法进行了大量的研究,基本的答案是它没有发生。如初。
答案 1 :(得分:0)
我建议您不要使用静态变量来保存当前用户ID,因为静态变量不是存储数据的最佳方式之一(我假设userID作为数据保留在应用的每个会话中,除了当用户注销时。)
最简单的方法是使用共享首选项。查看Android Data Storage,了解在Android中存储数据的最佳(实践)方式。
根据您的需要,我邀请您继续SharedPreferences。没有更多问题,您甚至不需要模拟操作系统回收的任何变量。