带有静态方法的类在Android中存在多长时间?

带有静态方法的类在Android中存在多长时间?,android,memory,static-members,dalvik,Android,Memory,Static Members,Dalvik,这是我的一个问题的后续问题 我有一个LoadingActivity,它加载所有活动所需的一些图形,并将其存储到一个静态类中。我尝试在按HOME键时不再加载LoadingActivity并恢复应用程序,因为它占用了大量内存,并且在多次加载图形后内存耗尽,因此无需再次启动LoadingActivity。 我的问题是,静态类能活多久?恢复应用程序后,我可以依赖它的可用性吗?或者,它可能会在这里,因为Android由于内存问题而关闭了它,或者只要vm运行,它就会一直在这里(这意味着只要手机运行)正如所指

这是我的一个问题的后续问题

我有一个LoadingActivity,它加载所有活动所需的一些图形,并将其存储到一个静态类中。我尝试在按HOME键时不再加载LoadingActivity并恢复应用程序,因为它占用了大量内存,并且在多次加载图形后内存耗尽,因此无需再次启动LoadingActivity。 我的问题是,静态类能活多久?恢复应用程序后,我可以依赖它的可用性吗?或者,它可能会在这里,因为Android由于内存问题而关闭了它,或者只要vm运行,它就会一直在这里(这意味着只要手机运行)

正如所指出的,“静态类”在不同的语言中意味着不同的东西,Java没有任何类似于其他一些语言中的静态类的东西。但我不认为你在说什么。您似乎在问由强静态引用引用的对象是否可以被垃圾收集。如果是,答案是否定的

类由class
class
的对象表示,该对象可通过其
ClassLoader
访问。因此,只要
类加载器
是可访问的,那么
类所引用的任何内容都是可访问的,在系统类加载器的情况下,只要Java/Dalvik VM存在,就可以访问。但这并没有手机运行的时间长,因为每个应用都会创建一个独立的虚拟机。应用程序运行的整个进程和VM可能会在应用程序处于后台时被终止。当您返回应用程序时,其类将被重新加载


如果静态字段确实是最佳选择,而不是
ContentProvider
或foregound
服务
,那么每次应用程序恢复时,您都需要检查静态引用是否已初始化,如果它们为空,则需要重新初始化它们。

我相信只要应用程序进程保持活动,它们就会一直存在。但在设备内存受限的应用程序开发中,将对象引用保持为静态从来都不是一个好主意。静态类与应用程序本身的生命周期相关联,这是Android一时兴起的。永远不要依赖静态类。“静态类”是指对“静态对象”的引用吗?你可能想澄清一下。。。听起来你在问关于用
静态类声明的类
@Machinarius有趣!Java不支持静态类。贝弗,这个问题没有任何意义。请澄清。事实上,投票决定关闭。@Simon我写的这篇评论来自于他们确实存在的背景(最近一直在研究Xamarin)。谢谢你发现了这个错误OP:我指的是类中的静态字段。这是错误的。不存在静态类,除非您引用的是对象中的静态内部类。你说的是POJO还是带有静态引用的活动?还是静态初始化的类字段?因为Java没有静态类,所以我投票否决这个答案,直到你澄清。理论上,一个给定的类加载器和它加载的所有类都可以由VM卸载。Android应用程序是使用自定义加载程序加载的,而不是“系统”加载程序。实际上,Dalvik不卸载类,因此这是一个没有实际意义的问题。