当前位置: 首页 > 知识库问答 >
问题:

使用同步初始化器的Android应用程序中的单例类

丰飞龙
2023-03-14

我需要在整个Android应用程序中使用一个类的单个实例。我正在使用以下代码来实现这一点,我想确保这样做是正确的、线程安全的并且不会对性能产生影响。

    public class MyClass {

        private static MyClass instance;

        public static synchronized MyClass getInstance() {
            MyClass myClass;
            synchronized (MyClass.class) {
                if (instance == null) {
                    instance = new MyClass();
                }
                myClass = instance;
            }
            return myClass;
        }
    }

每当我在应用程序中需要我的类的实例时,我就调用:

MyClass.getInstance();

所以,我不想确定我在这里没有做错什么,这种方法在开发过程中不会造成任何问题,如果有更好的替代方案的话。

共有1个答案

荣俊
2023-03-14

我认为您不需要在getInstance方法中使用第二个synchronizedconstructor,还需要使 构造函数成为私有构造函数

public class Singleton  {
 
    private static Singleton INSTANCE = null;
 
    // other instance variables can be here
     
    private Singleton() {};
 
    public static synchronized Singleton getInstance() {
        if (INSTANCE == null) {
            INSTANCE = new Singleton();
        }
        return INSTANCE;
    }
}
 类似资料:
  • 问题内容: 我有一个facebook初始化sdk调用,启动应用程序时需要它来初始化: 我想使用我的Application类来做到这一点。例如: 我的主要活动是使用Facebook登录按钮: 我怎么称呼我的申请单身人士?我如何使其onCreate()工作? 问题答案: 要使您的App类遵循 Singleton设计模式 : 然后在其他任何类中使用它: 如果这是您要的..

  • Rails 应用的初始化过程 本章节介绍了 Rails 4 应用启动的内部流程,适合有一定经验的Rails应用开发者阅读。 通过学习本章节,您会学到如下知识: 如何使用 rails server; Rails应用初始化的时间序列; Rails应用启动过程都用到哪些文件; Rails::Server接口的定义和使用; 本章节通过介绍一个基于Ruby on Rails框架默认配置的 Rails 4 应

  • 这是我的应用程序类: 包com.example.myapp 这就是我得到的错误。它在应用程序类的最后一行FirebaseFireStore.getInstance()上失败了,说它没有初始化,但您可以在上面看到我正在初始化它?

  • 我有一个应用程序崩溃的点:“New Downloader(this,mURL);”: 02-25 15:40:55.405 619-619/them.vertretungsplan e/androidruntime:致命异常:main java.lang.verifyerror:thems.vertretungsplan.downloader at thems.vertretungsplan.ve

  • 经过测试,它在非android程序上工作,但在android上初始化后立即崩溃。日志cat也没有生成任何错误消息。我从CircularFifoBuffer找到了这个。 编辑2: 08-05 21:12:48.837:I//system/bin/batteryd(1189):1566474 v_bat 3.678(3.677),i_supply 0.500,i_demand 0.282=>v_bat

  • 你已经有了基本的页面布局和需要用的CSS以及JS文件。现在我们需要初始化我们的应用,比如在 my-app.js中 var myApp = new Framework7(); 上面这个例子中我们使用了 myApp 作为变量名存储 Framework7 初始化之后的实例。 这样初始化非常简单,但是Framework7 也提供了更多个性化的定制,只需要在初始化的时候传入一个配置对象即可。 var myA