diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 324e659b00..6596c8680c 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -135,6 +135,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences static final int DEFAULT_BACKOFF_POWER = 3; // 2^3=8 seconds (totally 8+2x20=48 seconds) + private static final long MSG_DELAY = 15 * 1000L; // milliseconds private static final long BACKUP_DELAY = 30 * 1000L; // milliseconds private static final long PURGE_DELAY = 30 * 1000L; // milliseconds private static final int QUIT_DELAY = 10; // seconds @@ -737,6 +738,15 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences final TwoStateOwner cowner = new TwoStateOwner(this, "liveSynchronizing"); + final Runnable updateNew = new Runnable() { + @Override + public void run() { + Log.i("Update new messages"); + cowner.restart(); + getMainHandler().postDelayed(this, MSG_DELAY); + } + }; + db.folder().liveSynchronizing().observe(this, new Observer>() { private List lastAccounts = new ArrayList<>(); private List lastFolders = new ArrayList<>(); @@ -776,10 +786,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences " folders=" + folders.size() + " accounts=" + accounts.size()); - if (syncing == 0) + if (syncing == 0) { + getMainHandler().removeCallbacks(updateNew); cowner.start(); - else + } else { cowner.stop(); + getMainHandler().postDelayed(updateNew, MSG_DELAY); + } if (!changed) return;