从 Android 服务内部启动的 Singleton 实例是否将作为服务运行?

Is a Singleton instance initiated from inside an Android service going to work as Service?

我的 Android 应用程序中有一个单例结构,用于在不同 class 之间共享数据:

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 上的服务可以 运行 在后台运行一段不确定的时间。考虑到单例的静态实例是在我们第一次从它调用方法时创建的,我的疑问是:是单例class的实例,它首先是从一个服务内部发起的class 将在应用程序上作为服务工作? (当我的应用程序在后台 运行ning 时不会被 Android 杀死)

没有。当您的应用程序被杀死时,它就被杀死了。它的所有部分都被杀死了。

在 Android 的旧版本中,OS 知道您正在 运行 服务,这使得它不太可能杀死您的应用程序(就像以下情况之一一样您的应用程序的 Activity 当前是可见的,被杀死的可能性很小)。不过,它仅在服务 (Activity) 为 运行ning.

时才有效

现代 Android 有更多的内存可供使用,应用程序可以 运行 很长时间(几天),即使它们都没有 运行 服务也没有可见的 Activity。不过,您不能指望 in-memory 数据。需要就坚持吧