diff --git a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java b/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
index c197ac8f58b478170669e2bbaf068cfc0677a940..dac361defa6a21d61e22e1a2601390c0cd122be7 100644
--- a/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
+++ b/briar-android/src/net/sf/briar/android/invitation/AddContactActivity.java
@@ -259,9 +259,9 @@ implements InvitationListener {
 		task = invitationTaskFactory.createTask(localAuthorId,
 				localInvitationCode, code);
 		taskHandle = referenceManager.putReference(task, InvitationTask.class);
-		// FIXME: Why can't the activity clean up the reference? If the task
-		// has a reference to the activity (as a listener), it won't be GCed
 		task.addListener(AddContactActivity.this);
+		// Add a second listener so we can remove the first in onDestroy(),
+		// allowing the activity to be garbage collected if it's destroyed
 		task.addListener(new ReferenceCleaner(referenceManager, taskHandle));
 		task.connect();
 	}