diff --git a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
index e113a9a08577a2ab832c730755652840f3e8d1a0..683bc6bd409b36ef012ea9e4b9884a17b2e2b3a9 100644
--- a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
@@ -153,7 +153,6 @@ public class ContactListFragment extends BaseFragment implements EventListener {
 		list.setLayoutManager(new LinearLayoutManager(getContext()));
 		list.setAdapter(adapter);
 		list.setEmptyText(getString(R.string.no_contacts));
-		list.periodicallyUpdateContent();
 
 		return contentView;
 	}
@@ -183,6 +182,7 @@ public class ContactListFragment extends BaseFragment implements EventListener {
 		super.onResume();
 		eventBus.addListener(this);
 		loadContacts();
+		list.startPeriodicUpdate();
 	}
 
 	@Override
@@ -190,6 +190,7 @@ public class ContactListFragment extends BaseFragment implements EventListener {
 		super.onPause();
 		adapter.clear();
 		eventBus.removeListener(this);
+		list.stopPeriodicUpdate();
 	}
 
 	private void loadContacts() {
diff --git a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
index c85e84d8c449cbdda01c18b7420e76676347603d..4a936be8deef6a2ac8ee681a4a36b8bfcbdc94e7 100644
--- a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
@@ -170,7 +170,6 @@ public class ConversationActivity extends BriarActivity
 		list.setLayoutManager(new LinearLayoutManager(this));
 		list.setAdapter(adapter);
 		list.setEmptyText(getString(R.string.no_private_messages));
-		list.periodicallyUpdateContent();
 
 		content = (EditText) findViewById(R.id.input_text);
 		sendButton = findViewById(R.id.btn_send);
@@ -205,6 +204,7 @@ public class ConversationActivity extends BriarActivity
 		notificationManager.blockNotification(groupId);
 		notificationManager.clearPrivateMessageNotification(groupId);
 		loadData();
+		list.startPeriodicUpdate();
 	}
 
 	@Override
@@ -212,6 +212,7 @@ public class ConversationActivity extends BriarActivity
 		super.onPause();
 		eventBus.removeListener(this);
 		notificationManager.unblockNotification(groupId);
+		list.stopPeriodicUpdate();
 		if (isFinishing()) markMessagesRead();
 	}
 
diff --git a/briar-android/src/org/briarproject/android/forum/ForumActivity.java b/briar-android/src/org/briarproject/android/forum/ForumActivity.java
index dec9c69847111484b8dfb41dfaebb712cbfbe3e2..a949dc50089364d47b03730a424629d9331bf50d 100644
--- a/briar-android/src/org/briarproject/android/forum/ForumActivity.java
+++ b/briar-android/src/org/briarproject/android/forum/ForumActivity.java
@@ -119,7 +119,7 @@ public class ForumActivity extends BriarActivity implements
 							forumAdapter = new ForumAdapter(
 									forumController.getForumEntries());
 							recyclerView.setAdapter(forumAdapter);
-							recyclerView.periodicallyUpdateContent();
+							recyclerView.startPeriodicUpdate();
 							if (state != null) {
 								byte[] replyId =
 										state.getByteArray(KEY_REPLY_ID);
@@ -250,12 +250,18 @@ public class ForumActivity extends BriarActivity implements
 		super.onResume();
 		notificationManager.blockNotification(groupId);
 		notificationManager.clearForumPostNotification(groupId);
+		if (recyclerView.getRecyclerView().getAdapter() != null) {
+			recyclerView.startPeriodicUpdate();
+		}
 	}
 
 	@Override
 	public void onPause() {
 		super.onPause();
 		notificationManager.unblockNotification(groupId);
+		if (recyclerView.getRecyclerView().getAdapter() != null) {
+			recyclerView.stopPeriodicUpdate();
+		}
 	}
 
 	public void sendMessage(View view) {
diff --git a/briar-android/src/org/briarproject/android/forum/ForumListFragment.java b/briar-android/src/org/briarproject/android/forum/ForumListFragment.java
index 1916bce322bd3fbc27663b28aadbf2d07f5f6fc5..cca381a80fdcfd86a403740080cd4c000f170b4d 100644
--- a/briar-android/src/org/briarproject/android/forum/ForumListFragment.java
+++ b/briar-android/src/org/briarproject/android/forum/ForumListFragment.java
@@ -84,7 +84,6 @@ public class ForumListFragment extends BaseEventFragment implements
 		list.setLayoutManager(new LinearLayoutManager(getActivity()));
 		list.setAdapter(adapter);
 		list.setEmptyText(getString(R.string.no_forums));
-		list.periodicallyUpdateContent();
 
 		snackbar = Snackbar.make(list, "", LENGTH_INDEFINITE);
 		snackbar.getView().setBackgroundResource(R.color.briar_primary);
@@ -111,6 +110,7 @@ public class ForumListFragment extends BaseEventFragment implements
 
 		loadForumHeaders();
 		loadAvailableForums();
+		list.startPeriodicUpdate();
 	}
 
 	@Override
@@ -118,6 +118,7 @@ public class ForumListFragment extends BaseEventFragment implements
 		super.onPause();
 
 		adapter.clear();
+		list.stopPeriodicUpdate();
 	}
 
 	@Override
diff --git a/briar-android/src/org/briarproject/android/util/AndroidUtils.java b/briar-android/src/org/briarproject/android/util/AndroidUtils.java
index 077dc8aa58f95d366a678bb18fffbd3f403047d7..0488e927f64c0ed7aa8a0566a73eb3633bc06485 100644
--- a/briar-android/src/org/briarproject/android/util/AndroidUtils.java
+++ b/briar-android/src/org/briarproject/android/util/AndroidUtils.java
@@ -30,6 +30,8 @@ import static android.text.format.DateUtils.WEEK_IN_MILLIS;
 
 public class AndroidUtils {
 
+	static final long MIN_RESOLUTION = MINUTE_IN_MILLIS;
+
 	// Fake Bluetooth address returned by BluetoothAdapter on API 23 and later
 	private static final String FAKE_BLUETOOTH_ADDRESS = "02:00:00:00:00:00";
 
@@ -97,22 +99,20 @@ public class AndroidUtils {
 	}
 
 	public static String formatDate(Context ctx, long time) {
-		// update BriarRecyclerView#DEFAULT_REFRESH_INTERVAL along with this
-		long minResolution = MINUTE_IN_MILLIS;
 		int flags = FORMAT_ABBREV_RELATIVE |
 				FORMAT_SHOW_DATE | FORMAT_ABBREV_TIME | FORMAT_ABBREV_MONTH;
 
 		long diff = System.currentTimeMillis() - time;
-		if (diff < minResolution) return ctx.getString(R.string.now);
+		if (diff < MIN_RESOLUTION) return ctx.getString(R.string.now);
 		if (diff >= DAY_IN_MILLIS && diff < WEEK_IN_MILLIS) {
 			// also show time when older than a day, but newer than a week
-			return DateUtils.getRelativeDateTimeString(ctx, time, minResolution,
-					WEEK_IN_MILLIS, flags).toString();
+			return DateUtils.getRelativeDateTimeString(ctx, time,
+					MIN_RESOLUTION, WEEK_IN_MILLIS, flags).toString();
 		}
 		// otherwise just show "...ago" or date string
 		return DateUtils
 				.getRelativeTimeSpanString(time, System.currentTimeMillis(),
-						minResolution, flags).toString();
+						MIN_RESOLUTION, flags).toString();
 	}
 
 }
diff --git a/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java b/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java
index 6cd36dd6b0e71c06c815d7f4f5d0cf44ebb7d2fd..40884487aa17cb7a4e1bc0a496c3599163b7d026 100644
--- a/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java
+++ b/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java
@@ -17,6 +17,7 @@ import org.briarproject.R;
 import java.util.logging.Logger;
 
 import static android.text.format.DateUtils.MINUTE_IN_MILLIS;
+import static org.briarproject.android.util.AndroidUtils.MIN_RESOLUTION;
 
 public class BriarRecyclerView extends FrameLayout {
 
@@ -28,7 +29,7 @@ public class BriarRecyclerView extends FrameLayout {
 	private boolean isScrollingToEnd = false;
 
 	private final Logger LOG = Logger.getLogger(getClass().getName());
-	private final long DEFAULT_REFRESH_INTERVAL = MINUTE_IN_MILLIS;
+	private final long DEFAULT_REFRESH_INTERVAL = MIN_RESOLUTION;
 
 	public BriarRecyclerView(Context context) {
 		this(context, null, 0);
@@ -52,10 +53,7 @@ public class BriarRecyclerView extends FrameLayout {
 	@Override
 	protected void onDetachedFromWindow() {
 		super.onDetachedFromWindow();
-		if (refresher != null) {
-			LOG.info("Removing Handler Callback");
-			removeCallbacks(refresher);
-		}
+		stopPeriodicUpdate();
 	}
 
 	private void initViews() {
@@ -172,7 +170,7 @@ public class BriarRecyclerView extends FrameLayout {
 		return this.recyclerView;
 	}
 
-	public void periodicallyUpdateContent() {
+	public void startPeriodicUpdate() {
 		if (recyclerView == null || recyclerView.getAdapter() == null) {
 			throw new IllegalStateException("Need to call setAdapter() first!");
 		}
@@ -188,4 +186,11 @@ public class BriarRecyclerView extends FrameLayout {
 		postDelayed(refresher, DEFAULT_REFRESH_INTERVAL);
 	}
 
+	public void stopPeriodicUpdate() {
+		if (refresher != null) {
+			LOG.info("Removing Handler Callback");
+			removeCallbacks(refresher);
+		}
+	}
+
 }