From b16c6b7f56ba5782060b9ed4d32cc8ff20dfd85d Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 16 Oct 2018 12:06:42 +0000 Subject: [PATCH] Differentiate wakelocks --- .../eu/faircode/email/ServiceSynchronize.java | 30 ++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index 4d84a4773f..bc1ddac6c9 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -526,11 +526,11 @@ public class ServiceSynchronize extends LifecycleService { private void monitorAccount(final EntityAccount account, final ServiceState state) throws NoSuchProviderException { final PowerManager pm = getSystemService(PowerManager.class); - final PowerManager.WakeLock wl = pm.newWakeLock( + final PowerManager.WakeLock wl0 = pm.newWakeLock( PowerManager.PARTIAL_WAKE_LOCK, - BuildConfig.APPLICATION_ID + ":account." + account.id); + BuildConfig.APPLICATION_ID + ":account." + account.id + ".monitor"); try { - wl.acquire(); + wl0.acquire(); final DB db = DB.getInstance(this); final ExecutorService executor = Executors.newSingleThreadExecutor(Helper.backgroundThreadFactory); @@ -557,6 +557,10 @@ public class ServiceSynchronize extends LifecycleService { try { // Listen for store events istore.addStoreListener(new StoreListener() { + PowerManager.WakeLock wl = pm.newWakeLock( + PowerManager.PARTIAL_WAKE_LOCK, + BuildConfig.APPLICATION_ID + ":account." + account.id + ".store"); + @Override public void notification(StoreEvent e) { try { @@ -573,6 +577,10 @@ public class ServiceSynchronize extends LifecycleService { // Listen for folder events istore.addFolderListener(new FolderAdapter() { + PowerManager.WakeLock wl = pm.newWakeLock( + PowerManager.PARTIAL_WAKE_LOCK, + BuildConfig.APPLICATION_ID + ":account." + account.id + ".folder"); + @Override public void folderCreated(FolderEvent e) { try { @@ -670,6 +678,10 @@ public class ServiceSynchronize extends LifecycleService { // Synchronize folder Thread sync = new Thread(new Runnable() { + PowerManager.WakeLock wl = pm.newWakeLock( + PowerManager.PARTIAL_WAKE_LOCK, + BuildConfig.APPLICATION_ID + ":account." + account.id + ".sync"); + @Override public void run() { try { @@ -869,6 +881,10 @@ public class ServiceSynchronize extends LifecycleService { @Override public void onReceive(Context context, final Intent intent) { executor.submit(new Runnable() { + PowerManager.WakeLock wl = pm.newWakeLock( + PowerManager.PARTIAL_WAKE_LOCK, + BuildConfig.APPLICATION_ID + ":account." + account.id + ".process"); + @Override public void run() { long fid = intent.getLongExtra("folder", -1); @@ -958,7 +974,7 @@ public class ServiceSynchronize extends LifecycleService { public void onReceive(Context context, Intent intent) { // Receiver runs on main thread // Receiver has a wake lock for ~10 seconds - EntityLog.log(context, account.name + " keep alive wake lock=" + wl.isHeld()); + EntityLog.log(context, account.name + " keep alive wake lock=" + wl0.isHeld()); state.thread.interrupt(); yieldWakelock(); } @@ -980,12 +996,12 @@ public class ServiceSynchronize extends LifecycleService { pi); try { - wl.release(); + wl0.release(); Thread.sleep(Long.MAX_VALUE); } catch (InterruptedException ex) { EntityLog.log(this, account.name + " waited running=" + state.running); } finally { - wl.acquire(); + wl0.acquire(); } if (state.running) { @@ -1077,7 +1093,7 @@ public class ServiceSynchronize extends LifecycleService { } } finally { EntityLog.log(this, account.name + " stopped"); - wl.release(); + wl0.release(); } }