From f93fed20a3dab00e59c8bed337defba6307a94f8 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 19 Jan 2020 15:28:04 +0100 Subject: [PATCH] Cancel quit on operations pending --- .../eu/faircode/email/ServiceSynchronize.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index c46e3f3803..c0e1c45a20 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -358,12 +358,15 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences return; lastQuitId = startId; - EntityLog.log(ServiceSynchronize.this, "Service quit startId=" + startId); + EntityLog.log(ServiceSynchronize.this, + "Service quit startId=" + startId + " ops=" + lastOperations); queue.submit(new Runnable() { @Override public void run() { - Log.i("### quit"); + Log.i("### quit startId=" + startId + "/" + lastQuitId + " ops=" + lastOperations); + if (lastOperations == 0) + return; if (startId == null) { // Service destroy @@ -372,7 +375,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences for (EntityOperation op : ops) db.folder().setFolderSyncState(op.folder, null); } else { - // Delay for widget updates + // Yield update notifications/widgets try { Thread.sleep(QUIT_DELAY); } catch (InterruptedException ex) { @@ -380,8 +383,9 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences } // Stop service - boolean stopped = stopSelfResult(startId); - EntityLog.log(ServiceSynchronize.this, "Service quited=" + stopped + " startId=" + startId); + boolean stopped = (lastOperations == 0 && stopSelfResult(startId)); + EntityLog.log(ServiceSynchronize.this, "Service quited=" + stopped + + " startId=" + startId + "/" + lastQuitId + " ops=" + lastOperations); } } }); @@ -1192,7 +1196,6 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences }); } - // Keep alive boolean first = true; while (state.isRunning()) { @@ -1206,6 +1209,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences if (!ServiceSynchronize.this.getMainLooper().getThread().isAlive()) { Log.e("App died"); + EntityLog.log(ServiceSynchronize.this, account.name + " app died"); state.stop(); throw new StoreClosedException(iservice.getStore(), "App died"); }