안드로이드(Android) 개발 컴포넌트 공유 객체 Application 만들어서 사용하는 방법

 

환경: Android Studio

 

안드로이드 Application Class 는 어느 컴포넌트(component) 에서나 공유할 수 있는 전역 클래스입니다. 컴포넌트들 사이에서 공동으로 관리할 데이터가 있다면 Application Class를 상속받아 만든 클래스를 사용합니다. 등록은 AndroidManifest.xml 에 하며, getApplicationContext() 함수로 객체에 접근할 수 있습니다. 안드로이드에서 컴포넌트는 액티비티(Activity), 서비스(Service), 방송수신자(Broadcast receiver), 콘텐츠 제공자(Content provider), 인텐트(Intent) 입니다.

 

아래에 나열한 순서대로 샘플을 구현해 보겠습니다.

 

l  android.app.Application Class 를 상속받아 클래스를 만듭니다.

l  AndroidManifest.xml 에 있는 <application> name 속성에 클래스를 등록합니다.

l  getApplicationContext() 함수로 Application 객체의 참조값을 얻습니다.

 

먼저 Application class 를 상속받아 사용자정의 클래스를 작성합니다. 기본적으로 Override 해야 하는 함수는 3가지 입니다. 그리고 id pwd 변수에 보관된 정보를 공유하기 위해 추가했습니다.

 

l  onCreate : 앱 생성될 때 호출됩니다. 모든 상태변수와 리소스 초기화 로직을 이곳에서 관리합니다.

l  onLowMemory : 시스템의 리소스가 부족할 때 발생합니다.

l  onConfigurationChanged : 컴포넌트가 실행되는 동안 기기의 설정 정보가 변경될 때 시스템에서 호출합니다.

import android.app.Application;
import android.content.res.Configuration;

public class CustomApplication extends Application {

    private String id = "gon";
    private String pwd = "1111";

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
    }
}

두 번째는 만든 Application class application 태그의 name 속성에 등록합니다.

안드로이드(Android) 개발 컴포넌트 공유 객체 Application 만들어서 사용하는 방법

  

세 번째는 getApplicationContext() 함수를 이용해서 Application 객체를 참조합니다. 그리고 Application 에 저장한 id pwd 정보를 가져 옵니다

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        CustomApplication app = (CustomApplication) getApplicationContext();

        TextView txtViewId = (TextView)findViewById(R.id.textView1);
        TextView txtViewPwd = (TextView)findViewById(R.id.textView4);

        // 정보 셋팅
        txtViewId.setText(app.getId());
        txtViewPwd.setText(app.getPwd());
    }
}
저작자 표시
신고
Posted by 녹두장군