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()을 해서 거기서 원하는 부분을 가져다 쓰면 된다. 어디에서나....
'Android' 카테고리의 다른 글
Android - 더블탭(double tap), 더블클릭, 더블터치 (0) | 2016.01.19 |
---|---|
Android - TextView 그리고 EditText View 전환 (0) | 2016.01.19 |
Android - ListView 갱신 with CursorAdapter. (0) | 2016.01.18 |
Android - Activity 화면 전환 효과 (0) | 2016.01.18 |
Android - Cursor (0) | 2016.01.15 |
Android - ListView, CursorAdapter 그리고 _id (0) | 2016.01.14 |
Android - SQLite 사용하기 (0) | 2016.01.12 |
Android - ListView and Adapter (0) | 2016.01.09 |