是从Android服务内部启动的Singleton实例将用作服务吗?

时间:2019-05-09 00:50:55

标签: android android-service

我在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杀死)

1 个答案:

答案 0 :(得分:1)

不。当您的应用程序被杀死时,它也会被杀死。它的所有部分都被杀死。

在较旧的Android版本中,操作系统知道您正在运行服务,从而使其不太可能杀死您的应用程序(就像当您当前看到某个应用程序的“活动”时,它不太可能被杀死) 。不过,只有在服务(活动)正在运行的情况下,它才有效。

现代Android具有更多的可用内存,即使应用程序既未运行服务也未运行可见活动,它们也可以运行很长时间(几天)。但是,您不能指望内存中的数据。如果需要,请坚持下去。