diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java
index 137f7066d5a3aff9c1e03718b8a9b370abd4044e..50f5b5b3d0acfa544a62e52cb498e541e7adb496 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogController.java
@@ -9,7 +9,6 @@ import org.briarproject.briar.android.controller.handler.ResultExceptionHandler;
 
 import java.util.Collection;
 
-import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
 
 @NotNullByDefault
@@ -18,7 +17,10 @@ public interface BlogController extends BaseController {
 	void setGroupId(GroupId g);
 
 	@UiThread
-	void setBlogSharingListener(@Nullable BlogSharingListener listener);
+	void setBlogSharingListener(BlogSharingListener listener);
+
+	@UiThread
+	void unsetBlogSharingListener(BlogSharingListener listener);
 
 	void loadBlogPosts(
 			ResultExceptionHandler<Collection<BlogPostItem>, DbException> handler);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogControllerImpl.java
index c78173c7f16e6c682f22fba000a88e6349315e00..08f43d8bce9f938efd65528d145c7c429ba01ab0 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogControllerImpl.java
@@ -96,10 +96,15 @@ class BlogControllerImpl extends BaseControllerImpl
 	}
 
 	@Override
-	public void setBlogSharingListener(@Nullable BlogSharingListener listener) {
+	public void setBlogSharingListener(BlogSharingListener listener) {
 		this.listener = listener;
 	}
 
+	@Override
+	public void unsetBlogSharingListener(BlogSharingListener listener) {
+		if (this.listener == listener) this.listener = null;
+	}
+
 	@Override
 	public void eventOccurred(Event e) {
 		if (groupId == null || listener == null)
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
index 0a68d8a95df3982acd033bf7825c451c963e8747..eb254067735abb8e871d5ff8338d4610380fe27a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogFragment.java
@@ -141,7 +141,8 @@ public class BlogFragment extends BaseFragment
 	@Override
 	public void onDestroy() {
 		super.onDestroy();
-		blogController.setBlogSharingListener(null);
+		blogController.unsetBlogSharingListener(this);
+		sharingController.unsetSharingListener(this);
 	}
 
 	@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedController.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedController.java
index 039eb78fd28ae42cbe90140fb518f0cc5967d212..e50b3ba17988c43bf9387fcf6d05d034bbfcf39a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedController.java
@@ -7,7 +7,6 @@ import org.briarproject.briar.api.blog.Blog;
 
 import java.util.Collection;
 
-import androidx.annotation.Nullable;
 import androidx.annotation.UiThread;
 
 @NotNullByDefault
@@ -19,7 +18,10 @@ public interface FeedController extends BaseController {
 	void loadPersonalBlog(ResultExceptionHandler<Blog, DbException> handler);
 
 	@UiThread
-	void setFeedListener(@Nullable FeedListener listener);
+	void setFeedListener(FeedListener listener);
+
+	@UiThread
+	void unsetFeedListener(FeedListener listener);
 
 	@NotNullByDefault
 	interface FeedListener extends BlogListener {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedControllerImpl.java
index 714fc052555b7ce06b262658607bab7c1aad170a..5a228891a7bbc7646af684c0273bd4baa263c65b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedControllerImpl.java
@@ -69,10 +69,15 @@ class FeedControllerImpl extends BaseControllerImpl implements FeedController {
 	}
 
 	@Override
-	public void setFeedListener(@Nullable FeedListener listener) {
+	public void setFeedListener(FeedListener listener) {
 		this.listener = listener;
 	}
 
+	@Override
+	public void unsetFeedListener(FeedListener listener) {
+		if (this.listener == listener) this.listener = null;
+	}
+
 	@Override
 	public void eventOccurred(Event e) {
 		if (listener == null) throw new IllegalStateException();
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java
index 575448b1b543e5a4f1497d57445d21d714c22e83..2d01394a3d922e42972b6b462fa37f6288c3a078 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/FeedFragment.java
@@ -134,7 +134,7 @@ public class FeedFragment extends BaseFragment implements
 	@Override
 	public void onDestroy() {
 		super.onDestroy();
-		feedController.setFeedListener(null);
+		feedController.unsetFeedListener(this);
 	}
 
 	@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java
index c098e82b5f404f581f5883a11d4ed3b226f2fdfc..01f8855787f6d192d6b9a6d7f387db32648240ff 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingController.java
@@ -16,6 +16,12 @@ public interface SharingController {
 	@UiThread
 	void setSharingListener(SharingListener listener);
 
+	/**
+	 * Unsets the listener.
+	 */
+	@UiThread
+	void unsetSharingListener(SharingListener listener);
+
 	/**
 	 * Call this when your lifecycle starts,
 	 * so the listener will be called when information changes.
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java
index 9cdc47cdbc0094e4613552840ad9c33dea6060e0..2d22db901b6cb1462d3af95b972c85a622d94330 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/controller/SharingControllerImpl.java
@@ -43,6 +43,11 @@ public class SharingControllerImpl implements SharingController, EventListener {
 		this.listener = listener;
 	}
 
+	@Override
+	public void unsetSharingListener(SharingListener listener) {
+		if (this.listener == listener) this.listener = null;
+	}
+
 	@Override
 	public void onStart() {
 		eventBus.addListener(this);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListController.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListController.java
index d4e5c9f9959cf5898ae1f67feff4897b6a96f6e3..47763f9d8d7cf1029ed9a91d1173a95214ae2f23 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListController.java
@@ -10,8 +10,6 @@ import org.briarproject.briar.api.privategroup.GroupMessageHeader;
 
 import java.util.Collection;
 
-import javax.annotation.Nullable;
-
 import androidx.annotation.UiThread;
 
 @NotNullByDefault
@@ -21,7 +19,10 @@ interface GroupListController extends DbController {
 	 * The listener must be set right after the controller was injected
 	 */
 	@UiThread
-	void setGroupListListener(@Nullable GroupListListener listener);
+	void setGroupListListener(GroupListListener listener);
+
+	@UiThread
+	void unsetGroupListListener(GroupListListener listener);
 
 	@UiThread
 	void onStart();
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java
index 3be2dd123ac72458aa800d97d9cf86597ef309fd..51d97095e81d3cf8f34086651aa979bd1ccd4564 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListControllerImpl.java
@@ -80,10 +80,15 @@ class GroupListControllerImpl extends DbControllerImpl
 	}
 
 	@Override
-	public void setGroupListListener(@Nullable GroupListListener listener) {
+	public void setGroupListListener(GroupListListener listener) {
 		this.listener = listener;
 	}
 
+	@Override
+	public void unsetGroupListListener(GroupListListener listener) {
+		if (this.listener == listener) this.listener = null;
+	}
+
 	@Override
 	@CallSuper
 	public void onStart() {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java
index f074be98339e8077165b17c49332e08a01de5e13..fcc3027d628433b780e51f2954482545323bfa6d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/list/GroupListFragment.java
@@ -112,7 +112,7 @@ public class GroupListFragment extends BaseFragment implements
 	@Override
 	public void onDestroy() {
 		super.onDestroy();
-		controller.setGroupListListener(null);
+		controller.unsetGroupListListener(this);
 	}
 
 	@Override