diff --git a/app/src/main/java/eu/faircode/email/MessageClassifier.java b/app/src/main/java/eu/faircode/email/MessageClassifier.java index ad9fd06f83..bf901bb8d2 100644 --- a/app/src/main/java/eu/faircode/email/MessageClassifier.java +++ b/app/src/main/java/eu/faircode/email/MessageClassifier.java @@ -239,7 +239,6 @@ public class MessageClassifier { File file = getFile(context); Helper.writeText(file, jroot.toString(2)); - loaded = false; Log.i("Classifier saved classes=" + classMessages.size() + " words=" + wordClassFrequency.size()); } diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index c50e69c8e2..6e2c96af3c 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -113,6 +113,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences private static ExecutorService executor = Helper.getBackgroundExecutor(1, "sync"); + private static final long BACKUP_DELAY = 30 * 1000L; // milliseconds private static final long PURGE_DELAY = 30 * 1000L; // milliseconds private static final long QUIT_DELAY = 5 * 1000L; // milliseconds private static final long STILL_THERE_THRESHOLD = 3 * 60 * 1000L; // milliseconds @@ -350,6 +351,9 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences WorkerFts.cancel(ServiceSynchronize.this); } + getMainHandler().removeCallbacks(backup); + getMainHandler().postDelayed(backup, BACKUP_DELAY); + if (!isBackgroundService(ServiceSynchronize.this)) try { NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); @@ -542,6 +546,22 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences } }); } + + private Runnable backup = new Runnable() { + @Override + public void run() { + queue.submit(new Runnable() { + @Override + public void run() { + try { + MessageClassifier.save(ServiceSynchronize.this); + } catch (Throwable ex) { + Log.e(ex); + } + } + }); + } + }; }); final TwoStateOwner cowner = new TwoStateOwner(this, "liveUnseenNotify");