diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index a44e9e9205..1ef11eb66d 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -35,6 +35,8 @@ import android.net.NetworkInfo; import android.net.NetworkRequest; import android.os.Build; import android.os.Bundle; +import android.os.Handler; +import android.os.HandlerThread; import android.os.OperationCanceledException; import android.os.PowerManager; import android.service.notification.StatusBarNotification; @@ -881,8 +883,6 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences wlAccount.acquire(); final DB db = DB.getInstance(this); - final ExecutorService executor = - Helper.getBackgroundExecutor(1, "account_" + account.id); long thread = Thread.currentThread().getId(); Long currentThread = thread; @@ -914,6 +914,10 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences final List cowners = new ArrayList<>(); + HandlerThread ht = new HandlerThread("account_" + account.id, THREAD_PRIORITY_BACKGROUND); + ht.start(); + final Handler handler = new Handler(ht.getLooper()); + // Debug SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); boolean debug = (prefs.getBoolean("debug", false) || BuildConfig.DEBUG); @@ -1294,7 +1298,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences final long sequence = state.getSequence(folder.id, key.getPriority()); - executor.submit(new Helper.PriorityRunnable(key.getPriority(), key.getOrder()) { + handler.post(new Helper.PriorityRunnable(key.getPriority(), key.getOrder()) { @Override public void run() { super.run(); @@ -1610,6 +1614,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences // Cancel running operations state.resetBatches(); + ht.quit(); // Close folders for (EntityFolder folder : mapFolders.keySet())