mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-16 12:49:55 +01:00
Add tags for wake lock holders.
This commit is contained in:
@@ -7,9 +7,9 @@ import java.util.concurrent.Executor;
|
|||||||
@NotNullByDefault
|
@NotNullByDefault
|
||||||
public interface AndroidWakeLockManager {
|
public interface AndroidWakeLockManager {
|
||||||
|
|
||||||
AndroidWakeLock createWakeLock();
|
AndroidWakeLock createWakeLock(String tag);
|
||||||
|
|
||||||
void runWakefully(Runnable r);
|
void runWakefully(Runnable r, String tag);
|
||||||
|
|
||||||
void executeWakefully(Runnable r, Executor executor);
|
void executeWakefully(Runnable r, Executor executor, String tag);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ class AndroidBluetoothTransportConnection
|
|||||||
this.socket = socket;
|
this.socket = socket;
|
||||||
in = timeoutMonitor.createTimeoutInputStream(
|
in = timeoutMonitor.createTimeoutInputStream(
|
||||||
socket.getInputStream(), plugin.getMaxIdleTime() * 2);
|
socket.getInputStream(), plugin.getMaxIdleTime() * 2);
|
||||||
wakeLock = wakeLockManager.createWakeLock();
|
wakeLock = wakeLockManager.createWakeLock("BluetoothConnection");
|
||||||
wakeLock.acquire();
|
wakeLock.acquire();
|
||||||
String address = socket.getRemoteDevice().getAddress();
|
String address = socket.getRemoteDevice().getAddress();
|
||||||
if (isValidBluetoothAddress(address)) remote.put(PROP_ADDRESS, address);
|
if (isValidBluetoothAddress(address)) remote.put(PROP_ADDRESS, address);
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ class AndroidTorPlugin extends TorPlugin {
|
|||||||
maxLatency, maxIdleTime,
|
maxLatency, maxIdleTime,
|
||||||
appContext.getDir("tor", MODE_PRIVATE));
|
appContext.getDir("tor", MODE_PRIVATE));
|
||||||
this.appContext = appContext;
|
this.appContext = appContext;
|
||||||
wakeLock = wakeLockManager.createWakeLock();
|
wakeLock = wakeLockManager.createWakeLock("TorPlugin");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
|
|||||||
@Override
|
@Override
|
||||||
public void startService() {
|
public void startService() {
|
||||||
scheduledExecutorService.scheduleAtFixedRate(
|
scheduledExecutorService.scheduleAtFixedRate(
|
||||||
() -> wakeLockManager.runWakefully(this::runDueTasks),
|
() -> wakeLockManager.runWakefully(this::runDueTasks,
|
||||||
TICK_MS, TICK_MS, MILLISECONDS);
|
"TaskTicker"), TICK_MS, TICK_MS, MILLISECONDS);
|
||||||
scheduleAlarm();
|
scheduleAlarm();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
|
|||||||
long now = SystemClock.elapsedRealtime();
|
long now = SystemClock.elapsedRealtime();
|
||||||
long dueMillis = now + MILLISECONDS.convert(delay, unit);
|
long dueMillis = now + MILLISECONDS.convert(delay, unit);
|
||||||
Runnable wakeful = () ->
|
Runnable wakeful = () ->
|
||||||
wakeLockManager.executeWakefully(task, executor);
|
wakeLockManager.executeWakefully(task, executor, "TaskHandoff");
|
||||||
ScheduledTask s = new ScheduledTask(wakeful, dueMillis);
|
ScheduledTask s = new ScheduledTask(wakeful, dueMillis);
|
||||||
if (dueMillis <= now) {
|
if (dueMillis <= now) {
|
||||||
scheduledExecutorService.execute(s);
|
scheduledExecutorService.execute(s);
|
||||||
@@ -124,7 +124,7 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
|
|||||||
LOG.info("Ignoring alarm with PID " + extraPid
|
LOG.info("Ignoring alarm with PID " + extraPid
|
||||||
+ ", current PID is " + currentPid);
|
+ ", current PID is " + currentPid);
|
||||||
}
|
}
|
||||||
});
|
}, "TaskAlarm");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void runDueTasks() {
|
private void runDueTasks() {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.util.logging.Logger;
|
|||||||
import javax.annotation.concurrent.GuardedBy;
|
import javax.annotation.concurrent.GuardedBy;
|
||||||
import javax.annotation.concurrent.ThreadSafe;
|
import javax.annotation.concurrent.ThreadSafe;
|
||||||
|
|
||||||
|
import static java.util.logging.Level.FINE;
|
||||||
import static java.util.logging.Logger.getLogger;
|
import static java.util.logging.Logger.getLogger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -23,21 +24,28 @@ class AndroidWakeLockImpl implements AndroidWakeLock {
|
|||||||
getLogger(AndroidWakeLockImpl.class.getName());
|
getLogger(AndroidWakeLockImpl.class.getName());
|
||||||
|
|
||||||
private final SharedWakeLock sharedWakeLock;
|
private final SharedWakeLock sharedWakeLock;
|
||||||
|
private final String tag;
|
||||||
|
|
||||||
private final Object lock = new Object();
|
private final Object lock = new Object();
|
||||||
@GuardedBy("lock")
|
@GuardedBy("lock")
|
||||||
private boolean held = false;
|
private boolean held = false;
|
||||||
|
|
||||||
AndroidWakeLockImpl(SharedWakeLock sharedWakeLock) {
|
AndroidWakeLockImpl(SharedWakeLock sharedWakeLock, String tag) {
|
||||||
this.sharedWakeLock = sharedWakeLock;
|
this.sharedWakeLock = sharedWakeLock;
|
||||||
|
this.tag = tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void acquire() {
|
public void acquire() {
|
||||||
synchronized (lock) {
|
synchronized (lock) {
|
||||||
if (held) {
|
if (held) {
|
||||||
LOG.fine("Already acquired");
|
if (LOG.isLoggable(FINE)) {
|
||||||
|
LOG.fine(tag + " already acquired");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
LOG.fine("Acquiring shared wake lock");
|
if (LOG.isLoggable(FINE)) {
|
||||||
|
LOG.fine(tag + " acquiring shared wake lock");
|
||||||
|
}
|
||||||
held = true;
|
held = true;
|
||||||
sharedWakeLock.acquire();
|
sharedWakeLock.acquire();
|
||||||
}
|
}
|
||||||
@@ -48,11 +56,15 @@ class AndroidWakeLockImpl implements AndroidWakeLock {
|
|||||||
public void release() {
|
public void release() {
|
||||||
synchronized (lock) {
|
synchronized (lock) {
|
||||||
if (held) {
|
if (held) {
|
||||||
LOG.fine("Releasing shared wake lock");
|
if (LOG.isLoggable(FINE)) {
|
||||||
|
LOG.fine(tag + " releasing shared wake lock");
|
||||||
|
}
|
||||||
held = false;
|
held = false;
|
||||||
sharedWakeLock.release();
|
sharedWakeLock.release();
|
||||||
} else {
|
} else {
|
||||||
LOG.fine("Already released");
|
if (LOG.isLoggable(FINE)) {
|
||||||
|
LOG.fine(tag + " already released");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,13 +51,13 @@ class AndroidWakeLockManagerImpl implements AndroidWakeLockManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AndroidWakeLock createWakeLock() {
|
public AndroidWakeLock createWakeLock(String tag) {
|
||||||
return new AndroidWakeLockImpl(sharedWakeLock);
|
return new AndroidWakeLockImpl(sharedWakeLock, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void runWakefully(Runnable r) {
|
public void runWakefully(Runnable r, String tag) {
|
||||||
AndroidWakeLock wakeLock = createWakeLock();
|
AndroidWakeLock wakeLock = createWakeLock(tag);
|
||||||
wakeLock.acquire();
|
wakeLock.acquire();
|
||||||
try {
|
try {
|
||||||
r.run();
|
r.run();
|
||||||
@@ -67,8 +67,8 @@ class AndroidWakeLockManagerImpl implements AndroidWakeLockManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void executeWakefully(Runnable r, Executor executor) {
|
public void executeWakefully(Runnable r, Executor executor, String tag) {
|
||||||
AndroidWakeLock wakeLock = createWakeLock();
|
AndroidWakeLock wakeLock = createWakeLock(tag);
|
||||||
wakeLock.acquire();
|
wakeLock.acquire();
|
||||||
try {
|
try {
|
||||||
executor.execute(() -> {
|
executor.execute(() -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user