Java 在AOSP、Android中定义单例
我正在开发一个自定义AOSP rom。因此,我修改了一些系统类并创建了新类。我的问题是定义一个单例类。使用这种模式,我们可以为每个请求创建一个对象,不是吗?但不知何故,当我构建aosp时,我看到为每个Android应用程序生成了不止一个相同的类Java 在AOSP、Android中定义单例,java,android,singleton,android-source,Java,Android,Singleton,Android Source,我正在开发一个自定义AOSP rom。因此,我修改了一些系统类并创建了新类。我的问题是定义一个单例类。使用这种模式,我们可以为每个请求创建一个对象,不是吗?但不知何故,当我构建aosp时,我看到为每个Android应用程序生成了不止一个相同的类 public final Singleton{ private static Singleton singleton; private int peakValue = -1; private Singleton(){} public stat
public final Singleton{
private static Singleton singleton;
private int peakValue = -1;
private Singleton(){}
public static Singleton getInstance(){
if(singleton == null)
singleton = new Singleton();
return singleton;
}
public int getPeakValue(){
return getInstance().peakValue;
}
public void setPeakValue(int val){
getInstance().peakValue = val;
}
}
在logcat
........ApplicationName1 : .......Singleton@1000abafe1
........ApplicationName2 : .......Singleton@1000abafee
所以,当我调用Singleton.getInstance().getPeakValue()时
它返回null
,即使我已经设置了值
有人能帮我吗?
如何定义单例?创建一个包含单例并绑定到它的服务。那么一次只有一个服务实例
每个应用程序都有自己的JVM,这就是您的方法不起作用的原因 你能分享或给出一个例子吗?如果我定义了一个服务,并在设置singleton的地方将int值绑定到它,那么我能在任何类或应用程序中通过getInstance获得这个值吗?@reigeki你必须通过system_server公开一个服务才能分享这个值。即使您有一个单例程序,每个应用程序都有自己的进程和虚拟机,因此单例程序只适用于正在运行的进程。了解像LocationManagerService这样的服务是如何工作的,然后查看SystemServer.java以添加该服务。然后,您的应用程序必须调用该服务以获取共享值。