下面列出了android.database.sqlite.SQLiteDatabase#enableWriteAheadLogging ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* 获取数据库连接
*/
SQLiteDatabase getDb() {
SQLiteDatabase db;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
SQLiteDatabase.OpenParams params = new SQLiteDatabase.OpenParams.Builder().setOpenFlags(
SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READWRITE |
SQLiteDatabase.CREATE_IF_NECESSARY).build();
setOpenParams(params);
db = getWritableDatabase();
} else {
//SQLiteDatabase.openOrCreateDatabase()
File dbFile = mContext.getDatabasePath(DBConfig.DB_NAME);
if (!dbFile.exists()) {
db = getWritableDatabase();
} else {
// 触发一次SQLiteOpenHelper的流程,再使用NO_LOCALIZED_COLLATORS标志打开数据库
db = getReadableDatabase();
db.close();
db = SQLiteDatabase.openDatabase(dbFile.getPath(), null,
SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.OPEN_READWRITE |
SQLiteDatabase.CREATE_IF_NECESSARY);
}
}
db.enableWriteAheadLogging();
return db;
}
@Override public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
setWriteAheadLoggingEnabled(true);
} else {
db.enableWriteAheadLogging();
}
}
/**
* Creates a new instance of the simple open helper.
*
* @param context Context to read assets. This will be helped by the
* instance.
*/
private DevicesOpenHelper(Context context) {
super(context, DB_NAME, null, SCHEMA_VERSION);
this.context = context;
// This will happen in onConfigure for API >= 16
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
SQLiteDatabase db = getWritableDatabase();
db.enableWriteAheadLogging();
db.execSQL("PRAGMA foreign_keys = ON;");
}
}
@Override
public void enableFeatures(@SQLiteOpenOptions int openOptions, SQLiteDatabase db) {
if ((openOptions & ENABLE_WRITE_AHEAD_LOGGING) != 0) {
db.enableWriteAheadLogging();
}
if ((openOptions & ENABLE_FOREIGN_KEY_CONSTRAINTS) != 0) {
db.execSQL("PRAGMA foreign_keys = ON");
}
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onConfigure(SQLiteDatabase db) {
super.onConfigure(db);
if (!db.isReadOnly()) {
db.enableWriteAheadLogging();
}
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
db.enableWriteAheadLogging();
}
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
setWriteAheadLoggingEnabled(true);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
db.enableWriteAheadLogging();
}
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onConfigure(SQLiteDatabase db) {
super.onConfigure(db);
if (!db.isReadOnly()) {
db.enableWriteAheadLogging();
}
}
public void createSampleData() {
MyDatabaseHelper helper = new MyDatabaseHelper(this);
SQLiteDatabase db = helper.getWritableDatabase();
long start = 0;
try {
// WALを有効にする
db.enableWriteAheadLogging();
Log.d(TAG, "WAL :" + db.isWriteAheadLoggingEnabled());
db.beginTransaction();
start = System.nanoTime();
for (int i = 0; i < 10000; i++) {
String name = NAMES[mRand.nextInt(NAMES.length)];
int age = mRand.nextInt(80);
ContentValues values = new ContentValues();
values.put("NAME", name);
values.put("AGE", age);
db.insert("USERS", null, values);
}
start = printTimeLog("Insert処理", start, System.nanoTime());
db.setTransactionSuccessful();
start = printTimeLog("setTransactionSuccessful", start,
System.nanoTime());
} finally {
db.endTransaction();
start = printTimeLog("endTransaction", start, System.nanoTime());
db.close();
helper.close();
printTimeLog("Close処理", start, System.nanoTime());
}
}
@Override
public void onConfigure(SQLiteDatabase db) {
db.enableWriteAheadLogging();
super.onConfigure(db);
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
QiscusLogger.print("Opening database.. ");
db.enableWriteAheadLogging();
}
@Override
public void onConfigure(SQLiteDatabase db) {
db.enableWriteAheadLogging();
super.onConfigure(db);
}
@Override
public SQLiteDatabase getReadableDatabase() {
SQLiteDatabase database = super.getReadableDatabase();
database.enableWriteAheadLogging();
return database;
}
@Override
public SQLiteDatabase getWritableDatabase() {
SQLiteDatabase database = super.getWritableDatabase();
database.enableWriteAheadLogging();
return database;
}
@Override
public SQLiteDatabase getReadableDatabase() {
SQLiteDatabase db = super.getReadableDatabase();
db.enableWriteAheadLogging();
return db;
}
@Override
public SQLiteDatabase getWritableDatabase() {
SQLiteDatabase db = super.getWritableDatabase();
db.enableWriteAheadLogging();
return db;
}
@Provides @Singleton SQLiteDatabase provideDb() {
DatabaseHelper databaseHelper = new DatabaseHelper(context);
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.enableWriteAheadLogging();
return db;
}
@Provides @Singleton SQLiteDatabase provideDb() {
DatabaseHelper databaseHelper = new DatabaseHelper(context);
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.enableWriteAheadLogging();
return db;
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN && Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
db.enableWriteAheadLogging();
}
}