출처 : http://lonelyshadow.tistory.com/77
개발을 하다보면 어플리케이션 전체에서 적용되는 전역 변수, 혹은 단 하나의 인스턴스를 사용해야할 때가 있다.
개발을 하다보면 어플리케이션 전체에서 적용되는 전역 변수, 혹은 단 하나의 인스턴스를 사용해야할 때가 있다.
현재 XMPP를 이용하여 개발을 하고 있는데, connection을 단 하나만 유지해야한다.
보통 Java를 사용할 때는 Singleton을 이용하여 유일한 인스턴스를 생성하는데, (나도 처음에 Android Activity, Service와는 별개로 Singleton을 만드는 Class를 만들었었고..)
이 Singleton에서 Activity나 Service로 데이터를 주고 받는 것이 여간 어려운 일이 아니다.
실제로 만들었을 때도, Service에서 Singleton에 있는 인스턴스를 받아오려고 했더니 인스턴스를 새로 생성하고... 하여간 문제가 많다 -_-...
그런데 조금 찾아보니, Android에서 Singleton을 사용할 필요가 없었다.
Android에서는 어플리케이션 전체에 사용되는 변수 및 함수를 넣어놓는 Application Class가 있기 때문이다.
Activity 생성때와 마찬가지로 Application을 상속받아서 Application Class를 만들고,
Menifest.xml에서 현재 존재하는 application 항목에 android:name을 추가하여 만들어진 Application Class의 이름을 넣어주면 된다.
Application Class에는 Context가 존재하기 때문에, SQLiteDatabase도 바로 사용할 수 있으므로 데이터 주고 받는 것이 굉장히 편해진다. 물론 Singleton의 장점을 사용할 수 있는 것은 두말할 필요도 없고.
onCreate()로 Application 실행시의 동작을 정해주고
onTerminate()로 종료시의 동작을 정해줄 수도 있다.
Activity에서 불러올 때는,
ApplicationClassName ACN = (ApplicationClassName)getApplicationContext();
으로 생성하여 사용하면 되겠다
'Android > Tip&Tech' 카테고리의 다른 글
[퍼옴]기본 리니어 레이아웃 정렬 방식 (0) | 2010.12.02 |
---|---|
[안드로이드]화면전환 에니메이션 설정 (0) | 2010.12.01 |
intent 객체 직렬화 해서 보내기(Bundle이용 포함) (0) | 2010.11.30 |
[안드로이드] Preference – UI 정보, 간단한 변수 저장하기 (0) | 2010.11.28 |
안드로이드에서 사운드 재생시 멀티 채널 수용하는 SoundManager 구현 (0) | 2010.11.26 |