我是一个简单的问题,但也许是复杂的内容。例如,我有这个类:
Singleton是一个单例类模式,例如:
public class Singleton {
static Singleton instance = new Singleton();
private Singleton();
List<HeavyObject> listaObjects;
}
我在任何上下文中使用此Singleton(Activity)。
我的问题是:Android可以在不释放当前活动的情况下随时发布此类吗?即,我正在观看活动B,Android可以销毁(发布)我的类Singleton,还是仅在所有应用程序发布时卸载的类?
或者也许当一个Activity被销毁时,因为这些类是在Activities的上下文中?
答案 0 :(得分:2)
如果没有对Singleton的未完成引用,就像在任何引用中 null 那样,垃圾收集机制一旦轮到它就会销毁它。这意味着一旦所有引用都为空,它很可能会被销毁但不会立即销毁。
但是,即使一个Activity使用Singleton,也不会释放它,除非该Activity被销毁
答案 1 :(得分:1)
我假设您的Singleton.instance实际上是一个静态字段(否则您的示例没有多大意义)。
在这种情况下,您的Singleton生命周期将与应用程序进程的生命周期相关联。当调用进程的第一个Activity(或对进程实现的服务进行调用)时,进程生存期开始。
在所有进程停止后,可以随时销毁该进程。
因此,如果您有一个未停止的活动,则该实例将保留。但是,如果您的流程中的所有活动都已停止,则可以随时销毁该流程。如果您的Activity再次启动,如果该进程在此期间已被销毁,则必须再次创建该实例。
答案 2 :(得分:-1)
如果您有耐心观看此video,您将获得Android内存管理的基础知识。
我完全建议你这样做!