diff --git a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
index 0556310213d62d97d2a6aaad5e546dc51d250386..18d3295eb0d96bd83834324e0ad67284a3dc397c 100644
--- a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
@@ -155,6 +155,11 @@ public class ContactListFragment extends BaseEventFragment {
 		loadContacts();
 	}
 
+	@Override
+	public void onPause() {
+		super.onPause();
+		adapter.clear();
+	}
 
 	private void loadContacts() {
 		listener.runOnDbThread(new Runnable() {
@@ -195,7 +200,6 @@ public class ContactListFragment extends BaseEventFragment {
 	private void displayContacts(final List<ContactListItem> contacts) {
 		listener.runOnUiThread(new Runnable() {
 			public void run() {
-				adapter.clear();
 				if (contacts.size() == 0) list.showData();
 				else adapter.addAll(contacts);
 			}
diff --git a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
index ae09f0a416a405e78eb7225816b5b411a6450688..0fb116b668a13172fcff2df70e5282865a18587f 100644
--- a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
@@ -81,8 +81,8 @@ import im.delight.android.identicons.IdenticonDrawable;
 import static android.widget.Toast.LENGTH_SHORT;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static org.briarproject.android.contact.ConversationItem.OutgoingItem;
 import static org.briarproject.android.contact.ConversationItem.IncomingItem;
+import static org.briarproject.android.contact.ConversationItem.OutgoingItem;
 
 public class ConversationActivity extends BriarActivity
 		implements EventListener, OnClickListener,
@@ -302,6 +302,8 @@ public class ConversationActivity extends BriarActivity
 					// so let the list know to hide progress bar
 					list.showData();
 				} else {
+					List<ConversationItem> items =
+							new ArrayList<ConversationItem>();
 					for (PrivateMessageHeader h : headers) {
 						ConversationMessageItem item =
 								(ConversationMessageItem) ConversationItem
@@ -309,7 +311,7 @@ public class ConversationActivity extends BriarActivity
 						byte[] body = bodyCache.get(h.getId());
 						if (body == null) loadMessageBody(h);
 						else item.setBody(body);
-						adapter.add(item);
+						items.add(item);
 					}
 					for (IntroductionMessage m : introductions) {
 						ConversationItem item;
@@ -322,8 +324,9 @@ public class ConversationActivity extends BriarActivity
 											contactName,
 											(IntroductionResponse) m);
 						}
-						adapter.add(item);
+						items.add(item);
 					}
+					adapter.addAll(items);
 					// Scroll to the bottom
 					list.scrollToPosition(adapter.getItemCount() - 1);
 				}
diff --git a/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java
index e4c297788918c911d2b6c7ff9e620d795c42bd07..4e8267663be841e7e2e79a404bb3c225d51b673e 100644
--- a/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java
+++ b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java
@@ -18,19 +18,21 @@ import org.briarproject.api.introduction.SessionId;
 import org.briarproject.api.messaging.PrivateMessageHeader;
 import org.briarproject.util.StringUtils;
 
+import java.util.List;
+
 import im.delight.android.identicons.IdenticonDrawable;
 
 import static android.support.v7.util.SortedList.INVALID_POSITION;
 import static android.support.v7.widget.RecyclerView.ViewHolder;
 import static org.briarproject.android.contact.ConversationItem.INTRODUCTION_IN;
 import static org.briarproject.android.contact.ConversationItem.INTRODUCTION_OUT;
+import static org.briarproject.android.contact.ConversationItem.IncomingItem;
 import static org.briarproject.android.contact.ConversationItem.MSG_IN;
 import static org.briarproject.android.contact.ConversationItem.MSG_IN_UNREAD;
 import static org.briarproject.android.contact.ConversationItem.MSG_OUT;
 import static org.briarproject.android.contact.ConversationItem.NOTICE_IN;
 import static org.briarproject.android.contact.ConversationItem.NOTICE_OUT;
 import static org.briarproject.android.contact.ConversationItem.OutgoingItem;
-import static org.briarproject.android.contact.ConversationItem.IncomingItem;
 
 class ConversationAdapter extends RecyclerView.Adapter {
 
@@ -367,6 +369,10 @@ class ConversationAdapter extends RecyclerView.Adapter {
 		items.clear();
 	}
 
+	public void addAll(List<ConversationItem> items) {
+		this.items.addAll(items);
+	}
+
 	private static class MessageHolder extends RecyclerView.ViewHolder {
 
 		public ViewGroup layout;
diff --git a/briar-android/src/org/briarproject/android/introduction/ContactChooserFragment.java b/briar-android/src/org/briarproject/android/introduction/ContactChooserFragment.java
index ec5c276797df3a8665246396f7b3f721d1824892..c381291f2a80bd93fc7e06bf74ac938df507ed79 100644
--- a/briar-android/src/org/briarproject/android/introduction/ContactChooserFragment.java
+++ b/briar-android/src/org/briarproject/android/introduction/ContactChooserFragment.java
@@ -131,6 +131,12 @@ public class ContactChooserFragment extends BaseFragment {
 		loadContacts();
 	}
 
+	@Override
+	public void onPause() {
+		super.onPause();
+		adapter.clear();
+	}
+
 	@Override
 	public String getUniqueTag() {
 		return TAG;
@@ -175,7 +181,6 @@ public class ContactChooserFragment extends BaseFragment {
 		introductionActivity.runOnUiThread(new Runnable() {
 			public void run() {
 				adapter.setLocalAuthor(localAuthorId);
-				adapter.clear();
 				if (contacts.size() == 0) list.showData();
 				else adapter.addAll(contacts);
 			}