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

싱글톤 패턴에 대해서 질문드립니다.

–2 추천
안드로이드 게임을 만들고있습니다.

싱글톤 패턴이란게 있던데 안드로이드에서 싱글톤 패턴의 장점과 어떨때 사용하는지,

그리고 사용하는 방법(기본적인 소스) 알려주시면 감사하겠습니다

즐거운 주말되세요 ^^
Hiter (170 포인트) 님이 2013년 4월 13일 질문

2개의 답변

+1 추천
싱글톤은 자바에서만 쓰이는 기법이 아닌 디자인패턴의 일부입니다.

내가 이 객체는 반드시 한개만 생성해서 쓰고싶을때 쓰는거죠. 예를들면 계정의 정보라던지, 앱의 배경음악을 담당하는 객체는 매번 생성할 필요가 없이 처음 한번만 생성해서 계속 가져다 쓰면 되잖아요.

원리는 간단합니다.

static CustomClass _class = NULL;

static CustomClass sharedClass(){

if(_class == NULL){

_class = new CustomClass();

}

return _class;

}

 

CustomClass.sharedClass() 하고 사용하면 되죠.

static은 아시다시피 메모리를 프로세스단위로 사용하기때문에 어느 위치에서도 사용할 수 있는 값입니다.

그렇기 때문에 최초 한번 NULL 값일때만 객체를 생성해주고 그 이후에는 생성된 값을 사용할수 있죠.

중요한건 초기화입니다. =NULL 이 빠지면 제대로 작동하지 않을 수 있어요. 값을 처음 선언했을때 반드시 NULL, 0이진 않거든요.
URA (300 포인트) 님이 2013년 4월 13일 답변
0 추천

안드로이드에서 static으로 만들어서 다른 activity 사이로 싱글톤 패턴을 사용하는 것은 비추합니다.

메모리에 싱글톤으로 사용하시는 class나 object가 acitivy가 죽더라도 살아 있기 때문입니다.

static이 아닌 한 Acitivy안에서만 살아 있을 Singleton을 만드실 경우엔:

2개이상인 thread가 어느 한 class를 만들어서 사용해야 하지만 하나이상은 만들면 안될때.. 어느 thread가 먼저 만들지 모를 때 (thread의 본질상). 그럴때 singleton을 사용해서 먼저 부른쪽이 class를 만들고, 두번째나 나중에 부르는 쪽은 만들어진 reference만 가져 오면 되는 상황입니다.

public class ContentFactory {

private Clock clock;

public Clock getClock() {
if (clock == null) {
clock = new Clock();
}
return clock;
}
}

 

요런식으로 만드시고 synchronized 상황에 따라서 넣으셔야 하고요.
그럼 getClock()을 부를때 처음껀 만들고, 두번째부터는 reference만 합니다.
 

 

익명사용자 님이 2013년 4월 13일 답변
...