싱글 톤 패턴으로 SQliteOpenHelper를 구현했으며 지금까지는 제대로 작동합니다. 조각이 업데이트 기록에 트랜잭션을 시작데이터 서비스와 싱글 톤 SQliteOpenHelper
- 서비스는
- 트랜잭션이 어떤 이유로 실패 업데이트 된 데이터를 읽 트리거됩니다 및
롤백됩니다
public class MyApplication extends Application{
private static MyApplication instance;
public MyApplication(){
instance = this;
}
public static Context getContext(){
return instance;
}
}
public class LocalDBHelper extends SQLiteOpenHelper{
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "MyDB";
private static final String LOG_TAG = "LocalDBHelper";
private static LocalDBHelper instance = null;
/*private constructor to avoid direct instantiation by other classes*/
private LocalDBHelper(){
super(MyApplication.getContext(), DATABASE_NAME, null, DATABASE_VERSION);
}
/*synchronized method to ensure only 1 instance of LocalDBHelper exists*/
public static synchronized LocalDBHelper getInstance(){
if(instance == null){
instance = new LocalDBHelper();
}
return instance;
}
...
...
}
사용법 :
SQLiteDatabase db = LocalDBHelper.getInstance().getWritableDatabase();
db.beginTransaction();
try{
....
...
db.setTransactionSuccessful();
}catch(Exception e){
e.printStackTrace();
}
finally{
db.endTransaction();
}
이 내용을 확인해야합니다. http://blog.lemberg.co.uk/concurrent-database-access –
@ user2247689 감사합니다. 나는 3 개의 다른 사이트에서 같은 기사를 읽었습니다. :) 그러나 트랜잭션이나 격리, 그래서 질문에 무관하다. – faizal
죄송합니다. 질문을 제대로 읽지 않았습니다. 특히 서비스를 병행해야 할 때 서비스 다루는 일은 다소 까다 롭습니다. 기본적으로 '메시지'를 사용해야 할 것 같습니까? 이 http://developer.android.com/guide/components/bound-services.html#Messenger –