diff --git a/briar-android/src/org/briarproject/android/Destroyable.java b/briar-android/src/org/briarproject/android/Destroyable.java
index a9a9ef8ce5063d305c5db2a40287f6c57d3291ba..17c7dc8503367e81337d47f0e984e8c5d0ef0077 100644
--- a/briar-android/src/org/briarproject/android/Destroyable.java
+++ b/briar-android/src/org/briarproject/android/Destroyable.java
@@ -2,7 +2,7 @@ package org.briarproject.android;
 
 import android.support.annotation.UiThread;
 
-interface Destroyable {
+public interface Destroyable {
 
 	@UiThread
 	boolean hasBeenDestroyed();
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogFragment.java b/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
index 5c175517de0e95e0f9ef8960a3727d10c4549910..4ff2695e3d8ddfbefbaba41dc4952c683048865a 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
@@ -209,7 +209,7 @@ public class BlogFragment extends BaseFragment implements
 	public void onBlogPostAdded(BlogPostHeader header, final boolean local) {
 		blogController.loadBlogPost(header,
 				new UiResultExceptionHandler<BlogPostItem, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(BlogPostItem post) {
 						adapter.add(post);
@@ -233,7 +233,7 @@ public class BlogFragment extends BaseFragment implements
 	void loadBlogPosts(final boolean reload) {
 		blogController.loadBlogPosts(
 				new UiResultExceptionHandler<Collection<BlogPostItem>, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(Collection<BlogPostItem> posts) {
 						if (posts.size() > 0) {
@@ -254,8 +254,7 @@ public class BlogFragment extends BaseFragment implements
 
 	private void loadBlog() {
 		blogController.loadBlog(
-				new UiResultExceptionHandler<BlogItem, DbException>(
-						getActivity()) {
+				new UiResultExceptionHandler<BlogItem, DbException>(listener) {
 					@Override
 					public void onResultUi(BlogItem blog) {
 						setToolbarTitle(blog.getBlog().getAuthor());
@@ -333,7 +332,7 @@ public class BlogFragment extends BaseFragment implements
 
 	private void deleteBlog() {
 		blogController.deleteBlog(
-				new UiResultExceptionHandler<Void, DbException>(getActivity()) {
+				new UiResultExceptionHandler<Void, DbException>(listener) {
 					@Override
 					public void onResultUi(Void result) {
 						Toast.makeText(getActivity(),
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostFragment.java b/briar-android/src/org/briarproject/android/blogs/BlogPostFragment.java
index 39c1bf3a5d80e8688e0aa6675b87321f5c22c673..ac7b4d504e440bafdf8254703239bd079bfca530 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogPostFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogPostFragment.java
@@ -62,7 +62,7 @@ public class BlogPostFragment extends BasePostFragment {
 		super.onStart();
 		blogController.loadBlogPost(postId,
 				new UiResultExceptionHandler<BlogPostItem, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(BlogPostItem post) {
 						onBlogPostLoaded(post);
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostPagerFragment.java b/briar-android/src/org/briarproject/android/blogs/BlogPostPagerFragment.java
index 3a68030a1ea45446331531d3777025a2884f656a..f0a534b84714e8616dc77b07d671167ce76ebb12 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogPostPagerFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogPostPagerFragment.java
@@ -45,7 +45,7 @@ public class BlogPostPagerFragment extends BasePostPagerFragment {
 	void loadBlogPosts(final MessageId select) {
 		blogController.loadBlogPosts(
 				new UiResultExceptionHandler<Collection<BlogPostItem>, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(Collection<BlogPostItem> posts) {
 						onBlogPostsLoaded(select, posts);
@@ -61,7 +61,7 @@ public class BlogPostPagerFragment extends BasePostPagerFragment {
 	void loadBlogPost(BlogPostHeader header) {
 		blogController.loadBlogPost(header,
 				new UiResultExceptionHandler<BlogPostItem, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(BlogPostItem post) {
 						addPost(post);
diff --git a/briar-android/src/org/briarproject/android/blogs/FeedFragment.java b/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
index dbdd11127198d60bbdb5d508942ccc4496bff245..41791e962cd69bbca1106f91f53a2f99c51cdf97 100644
--- a/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
@@ -108,7 +108,7 @@ public class FeedFragment extends BaseFragment implements
 				});
 		feedController.loadBlogPosts(
 				new UiResultExceptionHandler<Collection<BlogPostItem>, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(Collection<BlogPostItem> posts) {
 						if (posts.isEmpty()) {
@@ -175,7 +175,7 @@ public class FeedFragment extends BaseFragment implements
 	public void onBlogPostAdded(BlogPostHeader header, final boolean local) {
 		feedController.loadBlogPost(header,
 				new UiResultExceptionHandler<BlogPostItem, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(BlogPostItem post) {
 						adapter.add(post);
diff --git a/briar-android/src/org/briarproject/android/blogs/FeedPostFragment.java b/briar-android/src/org/briarproject/android/blogs/FeedPostFragment.java
index 807bcd6e34f69b06d1a971b54f44d2516df0514e..442a85ef9877a91c9ee3f94e557b1e76f182e289 100644
--- a/briar-android/src/org/briarproject/android/blogs/FeedPostFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/FeedPostFragment.java
@@ -65,7 +65,7 @@ public class FeedPostFragment extends BasePostFragment {
 		super.onStart();
 		feedController.loadBlogPost(blogId, postId,
 				new UiResultExceptionHandler<BlogPostItem, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(BlogPostItem post) {
 						onBlogPostLoaded(post);
diff --git a/briar-android/src/org/briarproject/android/blogs/FeedPostPagerFragment.java b/briar-android/src/org/briarproject/android/blogs/FeedPostPagerFragment.java
index df2c4e33ecc1c33ea7ef4b0c19e973cede142cc5..ab9444104c6b3a84496be03d97cbe9d81a26f941 100644
--- a/briar-android/src/org/briarproject/android/blogs/FeedPostPagerFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/FeedPostPagerFragment.java
@@ -44,7 +44,7 @@ public class FeedPostPagerFragment extends BasePostPagerFragment {
 	void loadBlogPosts(final MessageId select) {
 		feedController.loadBlogPosts(
 				new UiResultExceptionHandler<Collection<BlogPostItem>, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(Collection<BlogPostItem> posts) {
 						onBlogPostsLoaded(select, posts);
@@ -60,7 +60,7 @@ public class FeedPostPagerFragment extends BasePostPagerFragment {
 	void loadBlogPost(BlogPostHeader header) {
 		feedController.loadBlogPost(header,
 				new UiResultExceptionHandler<BlogPostItem, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(BlogPostItem post) {
 						addPost(post);
diff --git a/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java b/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
index 87ac6138050e313e02938d23e2e877f54df0f830..305273ba8d78e77c34a2b93398a2436fcf07a0d1 100644
--- a/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
@@ -106,7 +106,7 @@ public class ReblogFragment extends BaseFragment {
 		// TODO: Load blog post when fragment is created. #631
 		feedController.loadBlogPost(blogId, postId,
 				new UiResultExceptionHandler<BlogPostItem, DbException>(
-						getActivity()) {
+						listener) {
 					@Override
 					public void onResultUi(BlogPostItem result) {
 						item = result;
@@ -148,7 +148,7 @@ public class ReblogFragment extends BaseFragment {
 	private void send() {
 		String comment = getComment();
 		feedController.repeatPost(item, comment,
-				new UiResultExceptionHandler<Void, DbException>(getActivity()) {
+				new UiResultExceptionHandler<Void, DbException>(listener) {
 					@Override
 					public void onResultUi(Void result) {
 						// do nothing, this fragment is gone already
diff --git a/briar-android/src/org/briarproject/android/controller/handler/UiResultExceptionHandler.java b/briar-android/src/org/briarproject/android/controller/handler/UiResultExceptionHandler.java
index ba2eab195ade5bd7c2ded6a9445041b025d70aec..1f9cab0937b755488ff56313f564d2aa1553df91 100644
--- a/briar-android/src/org/briarproject/android/controller/handler/UiResultExceptionHandler.java
+++ b/briar-android/src/org/briarproject/android/controller/handler/UiResultExceptionHandler.java
@@ -1,33 +1,36 @@
 package org.briarproject.android.controller.handler;
 
-import android.app.Activity;
 import android.support.annotation.UiThread;
 
+import org.briarproject.android.fragment.BaseFragment.BaseFragmentListener;
+
 public abstract class UiResultExceptionHandler<R, E extends Exception>
 		implements ResultExceptionHandler<R, E> {
 
-	private final Activity activity;
+	private final BaseFragmentListener listener;
 
-	public UiResultExceptionHandler(Activity activity) {
-		this.activity = activity;
+	protected UiResultExceptionHandler(BaseFragmentListener listener) {
+		this.listener = listener;
 	}
 
 	@Override
 	public void onResult(final R result) {
-		activity.runOnUiThread(new Runnable() {
+		listener.runOnUiThread(new Runnable() {
 			@Override
 			public void run() {
-				onResultUi(result);
+				if (!listener.hasBeenDestroyed())
+					onResultUi(result);
 			}
 		});
 	}
 
 	@Override
 	public void onException(final E exception) {
-		activity.runOnUiThread(new Runnable() {
+		listener.runOnUiThread(new Runnable() {
 			@Override
 			public void run() {
-				onExceptionUi(exception);
+				if (!listener.hasBeenDestroyed())
+					onExceptionUi(exception);
 			}
 		});
 	}
diff --git a/briar-android/src/org/briarproject/android/controller/handler/UiResultHandler.java b/briar-android/src/org/briarproject/android/controller/handler/UiResultHandler.java
index 0616b82a2bf2ad263575803c79f1d765a4826315..03c68d7ac6c694882f37e923f764c4ff93f0bba2 100644
--- a/briar-android/src/org/briarproject/android/controller/handler/UiResultHandler.java
+++ b/briar-android/src/org/briarproject/android/controller/handler/UiResultHandler.java
@@ -1,22 +1,24 @@
 package org.briarproject.android.controller.handler;
 
-import android.app.Activity;
 import android.support.annotation.UiThread;
 
+import org.briarproject.android.fragment.BaseFragment.BaseFragmentListener;
+
 public abstract class UiResultHandler<R> implements ResultHandler<R> {
 
-	private final Activity activity;
+	private final BaseFragmentListener listener;
 
-	public UiResultHandler(Activity activity) {
-		this.activity = activity;
+	protected UiResultHandler(BaseFragmentListener listener) {
+		this.listener = listener;
 	}
 
 	@Override
 	public void onResult(final R result) {
-		activity.runOnUiThread(new Runnable() {
+		listener.runOnUiThread(new Runnable() {
 			@Override
 			public void run() {
-				onResultUi(result);
+				if (!listener.hasBeenDestroyed())
+					onResultUi(result);
 			}
 		});
 	}
diff --git a/briar-android/src/org/briarproject/android/fragment/BaseFragment.java b/briar-android/src/org/briarproject/android/fragment/BaseFragment.java
index c19bcf1eed31cafa16714666da3283ab0a1901cb..d6f4ed363a1a125c5e88fe74de44e4f6fc779f2a 100644
--- a/briar-android/src/org/briarproject/android/fragment/BaseFragment.java
+++ b/briar-android/src/org/briarproject/android/fragment/BaseFragment.java
@@ -7,6 +7,7 @@ import android.support.annotation.UiThread;
 import android.support.v4.app.Fragment;
 
 import org.briarproject.android.ActivityComponent;
+import org.briarproject.android.Destroyable;
 
 public abstract class BaseFragment extends Fragment {
 
@@ -45,7 +46,7 @@ public abstract class BaseFragment extends Fragment {
 		getActivity().supportFinishAfterTransition();
 	}
 
-	public interface BaseFragmentListener {
+	public interface BaseFragmentListener extends Destroyable {
 
 		@UiThread
 		void showLoadingScreen(boolean isBlocking, int stringId);