Какие методы SQLite сделать синхронизированными?
FileBackupHelper выполняет резервное копирование моей базы данных, и в руководстве говорится, чтобы синхронизировать это действие с доступом к файлу БД в моем приложении. Я пытаюсь выяснить, где это необходимо.
Я мог синхронизировать определенные функции или весь доступ. Я рассматриваю три варианта:
1) Синхронизировать только изменения базы данных (записи)
synchronized(MyLocks.DBLock){
db.insert(MY_TABLE, null, contentValues);
db.update(MY_TABLE, contentValues, KEY_ID + " = ?", new String[]{str})});
}
2) Также синхронизировать чтение базы данных в моем адаптере.
synchronized(MyLocks.DBLock){
db.insert(MY_TABLE, null, contentValues);
db.update(MY_TABLE, contentValues, KEY_ID + " = ?", new String[]{str})});
Cursor c = db.query(true, MY_TABLE, new String[] {KEY_EC}, KEY_ID + "=" + id, null, null, null, null, null);
if (c != null && c.getCount() > 0) {
c.moveToFirst();
} else{
if(c != null)
c.close();
return null;
}
Double d = Double.valueOf(c.getDouble(c.getColumnIndex(KEY_EC)));
c.close();
}
3) Синхронизируйте все с момента, когда активность открывает адаптер базы данных.
// in an activity
DBAdapter dba = new DBAdapter(context);
synchronized(MyLocks.DBLock){
dba.open();
dba.doDatabaseOperation();
dba.close();
}
Какой из этих подходов необходим?