もしくはActivityの裏でDBのデータを頻繁に更新するような、Serviceを動かすアプリ
このようなアプリを作る場合、SQLiteへのアクセスが頻発し、トランザクションをかますような
処理をした時に、参照系のSQLがエラーでアプリが落ちる。という事があります。
このような場合、SQLiteOpenHelperを継承したクラスをシングルトンにすることで対応できます。
class DatabaseHelper extends SQLiteOpenHelper {
// 唯一のクラスインスタンス
private static DatabaseHelper instance = null;
/**
* コンストラクタをprivateにすることで、外部からはインスタンス化できないようにする
*/
@Override
private DatabaseHelper(Context context) {
super(context, "DBNAME", null, 1);
}
/**
* このstaticメソッドからインスタンスを得る
* 多数のクラスから参照されても、常にインスタンスは1つになる
*/
public static synchronized DatabaseHelper getInstance(Context context) {
if (instance == null) {
instance = new DatabaseHelper(context);
}
return instance;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
このクラスは他の常用クラスとまとめてjarにしてもいいかも。
0 件のコメント:
コメントを投稿