diff --git a/bramble-android/src/main/java/org/briarproject/bramble/util/RenewableWakeLock.java b/bramble-android/src/main/java/org/briarproject/bramble/util/RenewableWakeLock.java
index eb7ff4e0b0a5b8dd9374252512865813da10e79a..1681cbfd18d30ce84630d7657828718c404bbd5f 100644
--- a/bramble-android/src/main/java/org/briarproject/bramble/util/RenewableWakeLock.java
+++ b/bramble-android/src/main/java/org/briarproject/bramble/util/RenewableWakeLock.java
@@ -2,14 +2,21 @@ package org.briarproject.bramble.util;
 
 import android.os.PowerManager;
 
+import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
+
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Logger;
 
+import javax.annotation.Nullable;
+import javax.annotation.concurrent.ThreadSafe;
+
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.logging.Level.INFO;
 
+@ThreadSafe
+@NotNullByDefault
 public class RenewableWakeLock {
 
 	private static final Logger LOG =
@@ -29,7 +36,9 @@ public class RenewableWakeLock {
 	private final Runnable renewTask;
 
 	private final Object lock = new Object();
+	@Nullable
 	private PowerManager.WakeLock wakeLock; // Locking: lock
+	@Nullable
 	private ScheduledFuture future; // Locking: lock
 
 	public RenewableWakeLock(PowerManager powerManager,
@@ -80,6 +89,7 @@ public class RenewableWakeLock {
 				LOG.info("Already released");
 				return;
 			}
+			if (future == null) throw new AssertionError();
 			future.cancel(false);
 			future = null;
 			wakeLock.release();