Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java – Android VM可以垃圾收集静态变量,而不会杀死整个Android应用程序吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
(标题是误导的,因为垃圾收集器只收集对象,但我发现这个标题更直接)

假设我有一个Android应用程序,一个名为“global”的类名为“userid”的静态变量(在初始化时为空).

如果我将“userid”变量设置为Android应用程序生命周期中的一些值,则说Global.userid =“myid”,当Android应用程序仍然存在时,该变量是否可能变为空值?

换句话说,Android VM是否可以卸载Global类,并且由于低内存问题而“杀死”这个全局静态变量而不会杀死整个Android应用程序?

我担心在应用程序运行时(由于内存不足问题),userid突然变空,因此崩溃了整个应用程序.

编辑
我误解了一些概念(应用程序与活动之间).感谢所有答案!

解决方法@H_262_15@

如果你把它设置为null,是的.

对于正常情况,否

如果你使用自定义的类加载器玩,可以想象,有可能在哪些类被卸载的场景(因此他们上的任何静态数据成员都会发泄) – 我似乎记得有关于这种情况的讨论,但是我忘记了结论.然而,很少的应用程序应该会与自定义类加载器混淆.

这不应该发生.

可能发生的情况是用户在您的应用程序中,通过HOME离开应用程序(或通知,来电或最近的任务列表等),然后通过最近的任务列表返回到您的应用程序.如果您的进程在不在前台的时间内被终止,则当您从最近的任务列表启动活动时,静态数据成员将为空.由于用户返回的活动可能不一定是您的启动器活动,因此您的应用程序可能表现为静态数据成员自动变为空,尽管这是因为您的进程已被终止并重新启动.

这是静态数据成员需要非常仔细使用的几个原因之一.

大佬总结

以上是大佬教程为你收集整理的java – Android VM可以垃圾收集静态变量,而不会杀死整个Android应用程序吗?全部内容,希望文章能够帮你解决java – Android VM可以垃圾收集静态变量,而不会杀死整个Android应用程序吗?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。