我在Android应用程序中具有一个Singleton结构,该结构用于在不同的类之间共享数据:
public class DataHandler {
public DataHandler() {
}
private static DataHandler instance = null;
public static DataHandler getInstance() {
if (instance == null) {
instance = new DataHandler();
}
return instance;
}
}
我知道,即使这个Singleton实例是静态的,Android也会在我的应用程序在后台运行一段时间后终止它(出于内存管理的原因)。我也知道,Android上的服务可以在后台运行的时间不确定。考虑到单例的静态实例是在我们第一次从其调用方法时创建的,我的疑问是:是单例类的实例,该实例首先是从Service类内部启动的,它将作为应用? (并且当我的应用在后台运行时不会被Android杀死)
答案 0 :(得分:1)
不。当您的应用程序被杀死时,它也会被杀死。它的所有部分都被杀死。
在较旧的Android版本中,操作系统知道您正在运行服务,从而使其不太可能杀死您的应用程序(就像当您当前看到某个应用程序的“活动”时,它不太可能被杀死) 。不过,只有在服务(活动)正在运行的情况下,它才有效。
现代Android具有更多的可用内存,即使应用程序既未运行服务也未运行可见活动,它们也可以运行很长时间(几天)。但是,您不能指望内存中的数据。如果需要,请坚持下去。