diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
index c5b09f2443d9efb526c1c6c867977773864838e4..4d5dad242d716b61466463ff9e3ce5dc95e1d33a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java
@@ -38,6 +38,8 @@ public class AppModule {
 	static class EagerSingletons {
 		@Inject
 		AndroidNotificationManager androidNotificationManager;
+		@Inject
+		NetworkUsageLogger networkUsageLogger;
 	}
 
 	private final Application application;
@@ -173,4 +175,12 @@ public class AppModule {
 			ScreenFilterMonitorImpl screenFilterMonitor) {
 		return screenFilterMonitor;
 	}
+
+	@Provides
+	NetworkUsageLogger provideNetworkUsageLogger(
+			LifecycleManager lifecycleManager) {
+		NetworkUsageLogger networkUsageLogger = new NetworkUsageLogger();
+		lifecycleManager.registerService(networkUsageLogger);
+		return networkUsageLogger;
+	}
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageLogger.java b/briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageLogger.java
new file mode 100644
index 0000000000000000000000000000000000000000..dcf500cbf644ea264279efed844c36818b84b898
--- /dev/null
+++ b/briar-android/src/main/java/org/briarproject/briar/android/NetworkUsageLogger.java
@@ -0,0 +1,40 @@
+package org.briarproject.briar.android;
+
+import android.net.TrafficStats;
+import android.os.Process;
+
+import org.briarproject.bramble.api.lifecycle.Service;
+import org.briarproject.bramble.api.lifecycle.ServiceException;
+
+import java.util.logging.Logger;
+
+import static java.util.logging.Level.INFO;
+
+class NetworkUsageLogger implements Service {
+
+	private static final Logger LOG =
+			Logger.getLogger(NetworkUsageLogger.class.getName());
+
+	private volatile long startTime, rxBytes, txBytes;
+
+	@Override
+	public void startService() throws ServiceException {
+		startTime = System.currentTimeMillis();
+		int uid = Process.myUid();
+		rxBytes = TrafficStats.getUidRxBytes(uid);
+		txBytes = TrafficStats.getUidTxBytes(uid);
+	}
+
+	@Override
+	public void stopService() throws ServiceException {
+		if (LOG.isLoggable(INFO)) {
+			long sessionDuration = System.currentTimeMillis() - startTime;
+			int uid = Process.myUid();
+			long rx = TrafficStats.getUidRxBytes(uid) - rxBytes;
+			long tx = TrafficStats.getUidTxBytes(uid) - txBytes;
+			LOG.info("Duration " + (sessionDuration / 1000) + " seconds");
+			LOG.info("Received " + rx + " bytes");
+			LOG.info("Sent " + tx + " bytes");
+		}
+	}
+}