使用静态方法的类在Android中存在多长时间?

Bev*_*vor 5 memory android static-members dalvik

这是我之前的一个问题的后续问题.

我有一个LoadingActivity,它加载所有活动所需的一些图形并将其存储到静态类中.当我按下HOME并恢复应用程序时,我尝试不再重新加载LoadingActivity,因为它需要大量内存并且在多次运行之后已经加载了图形,因此无需再次启动LoadingActivity.我的问题是,静态课有多长时间了?我可以依靠它的可用性恢复后的应用程序,或者可以说,它是在这里(如手机运行,这意味着只要)由于Android它杀死因内存问题或者是它一直在这里只要虚拟机运行?

Kev*_*ede 6

正如Simon指出的那样,"静态类"在不同语言中意味着不同的东西,而Java在某些其他语言中没有任何类似静态类的东西.但我不认为这就是你所说的.您似乎在询问是否可以对强静态引用引用的对象进行垃圾回收.如果是这样,答案是否定的.

类由类的对象表示,Class可通过它来访问ClassLoader.Class因此,只要可以访问,就可以访问由will 引用的任何内容ClassLoader,在系统类加载器的情况下,只要Java/Dalvik VM存在就可以访问.但这并不是手机运行的时间,因为为每个应用程序创建了一个独立的VM.只要应用程序在后台运行,应用程序运行的整个过程和VM都可能会被终止.当您返回应用程序时,将重新加载其类.

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