storagePersister.doInTransaction(committer); long endTime = SystemClock.elapsedRealtime(); Timber.i("Preferences commit took %d ms", endTime - startTime);
void doInTransaction(StoragePersistOperationCallback operationCallback) { HashMap<String, String> workingStorage = new HashMap<>(); SQLiteDatabase workingDb = openDB(); try { operationCallback.beforePersistTransaction(workingStorage); StoragePersistOperations storagePersistOperations = new StoragePersistOperations(workingStorage, workingDb); workingDb.beginTransaction(); operationCallback.persist(storagePersistOperations); storagePersistOperations.close(); workingDb.setTransactionSuccessful(); operationCallback.onPersistTransactionSuccess(workingStorage); } finally { workingDb.endTransaction(); workingDb.close(); } }
private SQLiteDatabase openDB() { SQLiteDatabase db = context.openOrCreateDatabase(DB_NAME, Context.MODE_PRIVATE, null); db.beginTransaction(); try { if (db.getVersion() < 1) { createStorageDatabase(db); } else { StorageMigrations.upgradeDatabase(db, migrationsHelper); } db.setVersion(DB_VERSION); db.setTransactionSuccessful(); } finally { db.endTransaction(); } if (db.getVersion() != DB_VERSION) { throw new RuntimeException("Storage database upgrade failed!"); } return db; }
@Override @CheckResult public Map<String, String> loadValues() { long startTime = SystemClock.elapsedRealtime(); Timber.i("Loading preferences from DB into Storage"); HashMap<String, String> loadedValues = new HashMap<>(); Cursor cursor = null; SQLiteDatabase mDb = null; try { mDb = openDB(); cursor = mDb.rawQuery("SELECT primkey, value FROM preferences_storage", null); while (cursor.moveToNext()) { String key = cursor.getString(0); String value = cursor.getString(1); Timber.d("Loading key '%s', value = '%s'", key, value); loadedValues.put(key, value); } } finally { Utility.closeQuietly(cursor); if (mDb != null) { mDb.close(); } long endTime = SystemClock.elapsedRealtime(); Timber.i("Preferences load took %d ms", endTime - startTime); } return loadedValues; }