Use elapsed time since boot rather than wall clock time.

This commit is contained in:
akwizgran
2020-08-04 10:55:42 +01:00
parent f1bde4e75c
commit 090123579d
2 changed files with 5 additions and 9 deletions

View File

@@ -11,7 +11,6 @@ import android.os.SystemClock;
import org.briarproject.bramble.api.lifecycle.Service;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.system.AlarmListener;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.system.TaskScheduler;
import java.util.ArrayList;
@@ -51,7 +50,6 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
private static final long ALARM_MS = INTERVAL_FIFTEEN_MINUTES;
private final Application app;
private final Clock clock;
private final ScheduledExecutorService scheduledExecutorService;
private final AlarmManager alarmManager;
@@ -59,10 +57,9 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
@GuardedBy("lock")
private final Queue<ScheduledTask> tasks = new PriorityQueue<>();
AndroidTaskScheduler(Application app, Clock clock,
AndroidTaskScheduler(Application app,
ScheduledExecutorService scheduledExecutorService) {
this.app = app;
this.clock = clock;
this.scheduledExecutorService = scheduledExecutorService;
alarmManager = (AlarmManager)
requireNonNull(app.getSystemService(ALARM_SERVICE));
@@ -82,7 +79,7 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
@Override
public Future<?> schedule(Runnable task, long delay, TimeUnit unit) {
long now = clock.currentTimeMillis();
long now = SystemClock.elapsedRealtime();
long dueMillis = now + MILLISECONDS.convert(delay, unit);
ScheduledTask s = new ScheduledTask(task, dueMillis);
if (dueMillis <= now) {
@@ -120,7 +117,7 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener {
}
private void runDueTasks() {
long now = clock.currentTimeMillis();
long now = SystemClock.elapsedRealtime();
List<ScheduledTask> due = new ArrayList<>();
synchronized (lock) {
while (true) {

View File

@@ -4,7 +4,6 @@ import android.app.Application;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.system.AlarmListener;
import org.briarproject.bramble.api.system.Clock;
import org.briarproject.bramble.api.system.TaskScheduler;
import java.util.concurrent.RejectedExecutionHandler;
@@ -37,10 +36,10 @@ public class AndroidTaskSchedulerModule {
@Provides
@Singleton
AndroidTaskScheduler provideAndroidTaskScheduler(
LifecycleManager lifecycleManager, Application app, Clock clock) {
LifecycleManager lifecycleManager, Application app) {
lifecycleManager.registerForShutdown(scheduledExecutorService);
AndroidTaskScheduler scheduler =
new AndroidTaskScheduler(app, clock, scheduledExecutorService);
new AndroidTaskScheduler(app, scheduledExecutorService);
lifecycleManager.registerService(scheduler);
return scheduler;
}