@@ -44,6 +44,7 @@ public abstract class SQLiteOpenHelper {
4444 private final SQLiteDatabaseHook mHook ;
4545 private final DatabaseErrorHandler mErrorHandler ;
4646 private boolean mEnableWriteAheadLogging ;
47+ private boolean mDeferSetWriteAheadLoggingEnabled ;
4748
4849 private SQLiteDatabase mDatabase = null ;
4950 private boolean mIsInitializing = false ;
@@ -152,16 +153,17 @@ public synchronized SQLiteDatabase getWritableDatabase(char[] password) {
152153 mIsInitializing = true ;
153154 if (mName == null ) {
154155 db = SQLiteDatabase .create (null , password );
155-
156156 } else {
157157 String path = mContext .getDatabasePath (mName ).getPath ();
158-
159158 File dbPathFile = new File (path );
160- if (!dbPathFile .exists ())
159+ if (!dbPathFile .exists ()) {
161160 dbPathFile .getParentFile ().mkdirs ();
162-
161+ }
163162 db = SQLiteDatabase .openOrCreateDatabase (path , password , mFactory , mHook , mErrorHandler );
164163 }
164+ if (mDeferSetWriteAheadLoggingEnabled ) {
165+ mEnableWriteAheadLogging = db .enableWriteAheadLogging ();
166+ }
165167 onConfigure (db );
166168 int version = db .getVersion ();
167169 if (version != mNewVersion ) {
@@ -306,8 +308,10 @@ public void setWriteAheadLoggingEnabled(boolean enabled) {
306308 } else {
307309 mDatabase .disableWriteAheadLogging ();
308310 }
311+ mEnableWriteAheadLogging = enabled ;
312+ } else {
313+ mDeferSetWriteAheadLoggingEnabled = enabled ;
309314 }
310- mEnableWriteAheadLogging = enabled ;
311315 }
312316 }
313317 }
0 commit comments