もしくは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 件のコメント:
コメントを投稿