X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fdao%2FBaseDAO.java;h=905bf23a08e3ab2f48aa490cad3d9cb2f278bbd4;hb=860e0419d619210bb59bcae1b64d8c5db90eef70;hp=b68ea5157a76abd8ff84898dfb7285fa76085083;hpb=93545c6fbf1244fbd96ecfc50e1115dbdc25f9ae;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/dao/BaseDAO.java b/app/src/main/java/net/ktnx/mobileledger/dao/BaseDAO.java index b68ea515..905bf23a 100644 --- a/app/src/main/java/net/ktnx/mobileledger/dao/BaseDAO.java +++ b/app/src/main/java/net/ktnx/mobileledger/dao/BaseDAO.java @@ -17,36 +17,47 @@ package net.ktnx.mobileledger.dao; -import android.os.AsyncTask; -import android.os.Handler; -import android.os.Looper; +import androidx.annotation.NonNull; -import androidx.annotation.Nullable; +import net.ktnx.mobileledger.utils.Misc; -abstract class BaseDAO { +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; + +public abstract class BaseDAO { + private final static Executor asyncRunner = Executors.newSingleThreadExecutor(); + public static void runAsync(Runnable runnable) { + asyncRunner.execute(runnable); + } abstract long insertSync(T item); - public void insert(T item, @Nullable OnInsertedReceiver receiver) { - AsyncTask.execute(() -> { + public void insert(T item) { + asyncRunner.execute(() -> insertSync(item)); + } + public void insert(T item, @NonNull OnInsertedReceiver receiver) { + asyncRunner.execute(() -> { long id = insertSync(item); - if (receiver != null) - new Handler(Looper.getMainLooper()).post(() -> receiver.onInsert(id)); + Misc.onMainThread(() -> receiver.onInsert(id)); }); } abstract void updateSync(T item); - public void update(T item, @Nullable Runnable onDone) { - AsyncTask.execute(() -> { + public void update(T item) { + asyncRunner.execute(() -> updateSync(item)); + } + public void update(T item, @NonNull Runnable onDone) { + asyncRunner.execute(() -> { updateSync(item); - if (onDone != null) - new Handler(Looper.getMainLooper()).post(onDone); + Misc.onMainThread(onDone); }); } abstract void deleteSync(T item); - public void delete(T item, @Nullable Runnable onDone) { - AsyncTask.execute(() -> { + public void delete(T item) { + asyncRunner.execute(() -> deleteSync(item)); + } + public void delete(T item, @NonNull Runnable onDone) { + asyncRunner.execute(() -> { deleteSync(item); - if (onDone != null) - new Handler(Looper.getMainLooper()).post(onDone); + Misc.onMainThread(onDone); }); } interface OnInsertedReceiver {