这是我previous questions之一的后续问题。
我有一个LoadingActivity,可以加载所有活动所需的一些图形并将其存储到静态类中。当我按下HOME并恢复应用程序时,我尝试不再重新加载LoadingActivity,因为它需要大量内存并且在多次运行之后已经加载了图形,因此无需再次启动LoadingActivity。 我的问题是,静态课有多长时间了?我可以在恢复应用程序后依赖它的可用性,或者可能它会在这里,因为Android由于内存问题而杀死它,或者只要vm运行它就一直在这里(这意味着只要手机正在运行??
答案 0 :(得分:6)
正如Simon指出的那样,"静态类"意味着不同语言中的不同东西,Java没有像其他语言中的静态类那样的东西。但我不认为这就是你所说的。您似乎在询问是否可以对强静态引用引用的对象进行垃圾回收。如果是这样,答案是否定的。
类由类Class
的对象表示,可通过其ClassLoader
访问。因此,只要Class
可达,ClassLoader
引用的任何内容都是可访问的,在系统类加载器的情况下,只要存在Java / Dalvik VM,就可以访问ContentProvider
。但只要手机运行,那就是不,因为为每个应用创建了一个独立的VM。只要应用程序在后台运行,应用程序运行的整个过程和VM都可能会被终止。当您返回应用程序时,将重新加载其类。
如果静态字段确实是最佳选择,而不是Service
或foregound {{1}},那么每次您的应用程序恢复时,您都需要检查静态引用是否已初始化并重新如果它们为空,则初始化它们。