Browse Source

Differentiate wakelocks

main
M66B 5 years ago
parent
commit
b16c6b7f56
1 changed files with 23 additions and 7 deletions
  1. +23
    -7
      app/src/main/java/eu/faircode/email/ServiceSynchronize.java

+ 23
- 7
app/src/main/java/eu/faircode/email/ServiceSynchronize.java View File

@ -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();
}
}


Loading…
Cancel
Save