从 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 数据。需要就坚持吧
我的 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 数据。需要就坚持吧