From 3fee5e24ec54d98fbe236953867229bc6707eba0 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 28 Aug 2018 19:51:43 +0000 Subject: [PATCH] Start service at boot only if synchronizing accounts --- app/src/main/java/eu/faircode/email/DaoAccount.java | 3 +++ .../java/eu/faircode/email/ReceiverAutostart.java | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/DaoAccount.java b/app/src/main/java/eu/faircode/email/DaoAccount.java index 5add514759..616bd39521 100644 --- a/app/src/main/java/eu/faircode/email/DaoAccount.java +++ b/app/src/main/java/eu/faircode/email/DaoAccount.java @@ -44,6 +44,9 @@ public interface DaoAccount { @Query("SELECT * FROM account WHERE `primary`") EntityAccount getPrimaryAccount(); + @Query("SELECT COUNT(*) FROM account WHERE synchronize") + int getSynchronizingAccountCount(); + @Query("SELECT * FROM account WHERE `primary`") LiveData livePrimaryAccount(); diff --git a/app/src/main/java/eu/faircode/email/ReceiverAutostart.java b/app/src/main/java/eu/faircode/email/ReceiverAutostart.java index c20e942727..eea1f42331 100644 --- a/app/src/main/java/eu/faircode/email/ReceiverAutostart.java +++ b/app/src/main/java/eu/faircode/email/ReceiverAutostart.java @@ -22,12 +22,21 @@ package eu.faircode.email; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.util.Log; public class ReceiverAutostart extends BroadcastReceiver { @Override - public void onReceive(Context context, Intent intent) { + public void onReceive(final Context context, Intent intent) { if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()) || Intent.ACTION_MY_PACKAGE_REPLACED.equals(intent.getAction())) - ServiceSynchronize.start(context); + new Thread(new Runnable() { + @Override + public void run() { + int synchronizing = DB.getInstance(context).account().getSynchronizingAccountCount(); + Log.i(Helper.TAG, "Synchronizing accounts=" + synchronizing); + if (synchronizing > 0) + ServiceSynchronize.start(context); + } + }).start(); } }