싱글톤 패턴으로 공통 데이터영역이라던지 메소드를 만들어 사용하곤 했었는데
안드로이드 자바 프로그래밍에서는 이런 기능을 해주는 클래스가 있다.
바로 Application 클래스인데 사용법은 아래와 같다.
public class MyApplication extends Application{ public byte[] g_pTempBuffer = null; @Override public void onCreate(){ super.onCreate(); Log.d("linsoo", "MyApplication onCreate"); g_pTempBuffer = new byte[20]; g_pTempBuffer[0] = 0; g_pTempBuffer[1] = 10; g_pTempBuffer[10] = 100; } public void showData(){ Log.d("linsoo", "ShowData = "+g_pTempBuffer[10]); } }
위 소스처럼 Application을 상속받는 클래스를 하나 만들어준다.
그리고 공통으로 사용할 변수나 함수들을 만들어준다.
그리고 사용할 클래스에서 아래와 같이 선언해준다.
private MyApplication myApp = null; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); myApp = (MyApplication) getApplication(); }
사용할 변수명은 위에 선언해주고 반드시 onCreate 안에서 초기화를 해준다.
테스트 해본 결과 변수 선언할때 동시에 해버리면 아직 MyApplication이 생성되지 않은 시점일수도 있어서 null값 나옴.
Log.d("linsoo", "mainBuffrer0="+myApp.g_pTempBuffer[0]); Log.d("linsoo", "mainBuffrer1="+myApp.g_pTempBuffer[1]); myApp.showData(); myApp.g_pTempBuffer[0] = 10; myApp.g_pTempBuffer[1] = 20;
사용은 위와 같은 방식으로 사용하면 된다.
그리고 AndroidManifest.xml에다가
<application android:name=".MyApplication"> ... </application>
와 같이 내가 만든 클래스 명을 <Application 안에 name 속성으로 이름을 적어줘야 한다.
답글 남기기