Android

Android - Application Class

TechNote.kr 2016. 1. 18. 00:13
728x90

sqlite를 사용하는 코드를 짜다 보니 여러 Activity 에서 sqlite를 호출해야 하는 경우가 있었다.


이럴 경우 그렇다면 Activity가 onPuase 될 때 마다 close하고 onResume 될 때 마다 open 해야 하는 것인가.


아니면 Main Activity에서 open해 놓고, open 당시 생성된 sql handler를 인자로 넘겨서 사용할 수 있을 것인가.


생각지도 않은 곳에서 막혀서 헤매이고 있을 때, 구글께서 그럴때는 Application class를 사용하도록 하여라라고 말씀해주셨다.;;


나도 이번에 처음 접한 개념인데 app이 동작하는 동안 공통적인 부분에대해 구현해 놓는, 다시 말하자면 global하게 모든 routine에서 가져다가 쓸수 있는 그런 것들을 선언하거나 구현해 놓는 부분이다.


즉, Application Class에서 sqlite 를 open해서 handler를 가지고 있으면, 이 handler가 필요한 곳, 아마 여러 Activity가 될텐데 이곳에서 가져다가 쓸 수 있는 것이다. Activity 전환시에 대한 고려가 전혀 필요가 없다.


구현 방법은 다음과 같다.


[Application Class 생성]


public class BaseApplication extends Application {

public TestSQLiteOpenHelper helper;

@Override
public void onCreate() {
super.onCreate();
helper = new TestSQLiteOpenHelper(BaseApplication.this, "test.db", null, 1);
helper.open();
}

}



[AndroidManifest.xml 수정]


<application

android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name="com.test.BaseApplication">



[Application Class의 사용]


helper = ((BaseApplication)getApplication()).helper;

c = helper.select();



어렵지 않다.


getApplication()을 해서 거기서 원하는 부분을 가져다 쓰면 된다. 어디에서나....

728x90