마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 싱글톤 패턴 질문 있습니다!!

0 추천

아래와 같이 Thread safe Lazy initialization 싱글톤 패턴을 사용하고 있었는데요.

  private Context mContext;
  private static Singleton mInstance = null;
  private Singleton(Context context) {
      mContext = context;
...
  }


  public static synchronized Singleton getInstance(Context context) {

      if (mInstance == null) {
          mInstance = new Singleton(context);
      }

      return mInstance;
  }

 

싱글톤 패턴을 검색해보면서 Initialization on demand holder idiom 이라는 방식을 가장 많이 사용한다고 되어있어서 한번 수정을 해보려고 하는데요.

아래와 같이 수정을 해서 setContext()를 먼저 부르고 getInstance()를 불러서 context를 받으려고 했습니다.

private Context mContext;

private Singleton() {
}

public static Singleton getInstance() {

    return SingletonHolder.Instance;
}
public static class SingletonHolder() {

    private static final Singleton Instance = new Singleton();
}
public void setContext(Context context){
    mContext = context;
}

그런데 결과적으로 에러가 발생해서 수정할 수 없었습니다.

Initialization on demand holder idiom 싱글톤 방식을 사용하면서 context를 매개변수로 받아서 처리할 수 있는 방법이 없을까요?

그리고 Initialization on demand holder idiom 방식이 처음 사용했던 Thread safe Lazy initialization 방식보다 성능이 뛰어난 게 맞나요? 뛰어나다면 어느 부분에서 뛰어난 건지 알 수 있을까요?

익명사용자 님이 2019년 12월 5일 질문
2019년 12월 5일 수정

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...