off-load option setting DB update to the background work queue
authorDamyan Ivanov <dam+mobileledger@ktnx.net>
Fri, 3 May 2019 15:10:29 +0000 (18:10 +0300)
committerDamyan Ivanov <dam+mobileledger@ktnx.net>
Fri, 3 May 2019 15:10:29 +0000 (18:10 +0300)
such an update may have to wait for the DB to complete any reads, like while
loading transaction data or even transaction data retrieval. that would lead
to UI freeze

delaying the update has no ill effects, since the data is needed only the next
time the app is run

app/src/main/java/net/ktnx/mobileledger/utils/MLDB.java

index 9089b9e..b3e1bf9 100644 (file)
@@ -34,6 +34,7 @@ import android.widget.AutoCompleteTextView;
 import android.widget.FilterQueryProvider;
 import android.widget.SimpleCursorAdapter;
 
+import net.ktnx.mobileledger.async.DbOpQueue;
 import net.ktnx.mobileledger.async.DescriptionSelectedCallback;
 import net.ktnx.mobileledger.model.Data;
 import net.ktnx.mobileledger.model.MobileLedgerProfile;
@@ -114,8 +115,7 @@ public final class MLDB {
     }
     static public void setOption(String name, String value) {
         debug("option", String.format("%s := %s", name, value));
-        SQLiteDatabase db = MLDB.getDatabase();
-        db.execSQL("insert or replace into options(profile, name, value) values(?, ?, ?);",
+        DbOpQueue.add("insert or replace into options(profile, name, value) values(?, ?, ?);",
                 new String[]{NO_PROFILE, name, value});
     }
     static public void setLongOption(String name, long value) {