mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-22 23:59:54 +01:00
Use elapsed time since boot rather than wall clock time.
This commit is contained in:
@@ -11,7 +11,6 @@ import android.os.SystemClock;
|
|||||||
import org.briarproject.bramble.api.lifecycle.Service;
|
import org.briarproject.bramble.api.lifecycle.Service;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.system.AlarmListener;
|
import org.briarproject.bramble.api.system.AlarmListener;
|
||||||
import org.briarproject.bramble.api.system.Clock;
|
|
||||||
import org.briarproject.bramble.api.system.TaskScheduler;
|
import org.briarproject.bramble.api.system.TaskScheduler;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -51,7 +50,6 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
|
|||||||
private static final long ALARM_MS = INTERVAL_FIFTEEN_MINUTES;
|
private static final long ALARM_MS = INTERVAL_FIFTEEN_MINUTES;
|
||||||
|
|
||||||
private final Application app;
|
private final Application app;
|
||||||
private final Clock clock;
|
|
||||||
private final ScheduledExecutorService scheduledExecutorService;
|
private final ScheduledExecutorService scheduledExecutorService;
|
||||||
private final AlarmManager alarmManager;
|
private final AlarmManager alarmManager;
|
||||||
|
|
||||||
@@ -59,10 +57,9 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
|
|||||||
@GuardedBy("lock")
|
@GuardedBy("lock")
|
||||||
private final Queue<ScheduledTask> tasks = new PriorityQueue<>();
|
private final Queue<ScheduledTask> tasks = new PriorityQueue<>();
|
||||||
|
|
||||||
AndroidTaskScheduler(Application app, Clock clock,
|
AndroidTaskScheduler(Application app,
|
||||||
ScheduledExecutorService scheduledExecutorService) {
|
ScheduledExecutorService scheduledExecutorService) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
this.clock = clock;
|
|
||||||
this.scheduledExecutorService = scheduledExecutorService;
|
this.scheduledExecutorService = scheduledExecutorService;
|
||||||
alarmManager = (AlarmManager)
|
alarmManager = (AlarmManager)
|
||||||
requireNonNull(app.getSystemService(ALARM_SERVICE));
|
requireNonNull(app.getSystemService(ALARM_SERVICE));
|
||||||
@@ -82,7 +79,7 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Future<?> schedule(Runnable task, long delay, TimeUnit unit) {
|
public Future<?> schedule(Runnable task, long delay, TimeUnit unit) {
|
||||||
long now = clock.currentTimeMillis();
|
long now = SystemClock.elapsedRealtime();
|
||||||
long dueMillis = now + MILLISECONDS.convert(delay, unit);
|
long dueMillis = now + MILLISECONDS.convert(delay, unit);
|
||||||
ScheduledTask s = new ScheduledTask(task, dueMillis);
|
ScheduledTask s = new ScheduledTask(task, dueMillis);
|
||||||
if (dueMillis <= now) {
|
if (dueMillis <= now) {
|
||||||
@@ -120,7 +117,7 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void runDueTasks() {
|
private void runDueTasks() {
|
||||||
long now = clock.currentTimeMillis();
|
long now = SystemClock.elapsedRealtime();
|
||||||
List<ScheduledTask> due = new ArrayList<>();
|
List<ScheduledTask> due = new ArrayList<>();
|
||||||
synchronized (lock) {
|
synchronized (lock) {
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import android.app.Application;
|
|||||||
|
|
||||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
||||||
import org.briarproject.bramble.api.system.AlarmListener;
|
import org.briarproject.bramble.api.system.AlarmListener;
|
||||||
import org.briarproject.bramble.api.system.Clock;
|
|
||||||
import org.briarproject.bramble.api.system.TaskScheduler;
|
import org.briarproject.bramble.api.system.TaskScheduler;
|
||||||
|
|
||||||
import java.util.concurrent.RejectedExecutionHandler;
|
import java.util.concurrent.RejectedExecutionHandler;
|
||||||
@@ -37,10 +36,10 @@ public class AndroidTaskSchedulerModule {
|
|||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
AndroidTaskScheduler provideAndroidTaskScheduler(
|
AndroidTaskScheduler provideAndroidTaskScheduler(
|
||||||
LifecycleManager lifecycleManager, Application app, Clock clock) {
|
LifecycleManager lifecycleManager, Application app) {
|
||||||
lifecycleManager.registerForShutdown(scheduledExecutorService);
|
lifecycleManager.registerForShutdown(scheduledExecutorService);
|
||||||
AndroidTaskScheduler scheduler =
|
AndroidTaskScheduler scheduler =
|
||||||
new AndroidTaskScheduler(app, clock, scheduledExecutorService);
|
new AndroidTaskScheduler(app, scheduledExecutorService);
|
||||||
lifecycleManager.registerService(scheduler);
|
lifecycleManager.registerService(scheduler);
|
||||||
return scheduler;
|
return scheduler;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user