diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationDataSource.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationDataSource.java index b879a49dfb..76abb7671a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationDataSource.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationDataSource.java @@ -49,7 +49,10 @@ class ConversationDataSource extends PositionalDataSource { } }; - invalidator.observe(this::invalidate); + invalidator.observe(() -> { + invalidate(); + context.getContentResolver().unregisterContentObserver(contentObserver); + }); context.getContentResolver().registerContentObserver(DatabaseContentProviders.Conversation.getUriForThread(threadId), true, contentObserver); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index 7d8c6075c2..065febd50c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -377,6 +377,9 @@ public class ConversationItem extends LinearLayout implements BindableConversati if (recipient != null) { recipient.removeForeverObserver(this); } + if (conversationRecipient != null) { + conversationRecipient.removeForeverObserver(this); + } } public MessageRecord getMessageRecord() {