finally fixed #notificationgate

Daniel Gultsch created

Change summary

src/eu/siacs/conversations/services/XmppConnectionService.java | 9 +++
src/eu/siacs/conversations/ui/ConversationActivity.java        | 1 
src/eu/siacs/conversations/ui/ConversationFragment.java        | 7 ---
3 files changed, 8 insertions(+), 9 deletions(-)

Detailed changes

src/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -85,6 +85,7 @@ public class XmppConnectionService extends Service {
 	private List<Conversation> conversations = null;
 
 	public OnConversationListChangedListener convChangedListener = null;
+	private int convChangedListenerCount = 0;
 	private OnAccountListChangedListener accountChangedListener = null;
 	private OnTLSExceptionReceived tlsException = null;
 
@@ -1009,10 +1010,16 @@ public class XmppConnectionService extends Service {
 	public void setOnConversationListChangedListener(
 			OnConversationListChangedListener listener) {
 		this.convChangedListener = listener;
+		this.convChangedListenerCount++;
+		Log.d(LOGTAG,"registered on conv changed in backend ("+convChangedListenerCount+")");
 	}
 
 	public void removeOnConversationListChangedListener() {
-		this.convChangedListener = null;
+		this.convChangedListenerCount--;
+		Log.d(LOGTAG,"someone on conv changed listener removed listener ("+convChangedListenerCount+")");
+		if (this.convChangedListenerCount==0) {
+			this.convChangedListener = null;
+		}
 	}
 
 	public void setOnAccountListChangedListener(

src/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -333,15 +333,8 @@ public class ConversationFragment extends Fragment {
 			this.onBackendConnected();
 		}
 	}
-	
-	@Override
-	public void onResume() {
-		super.onResume();
-		activity.registerListener();
-	}
 
 	public void onBackendConnected() {
-		activity.registerListener();
 		this.conversation = activity.getSelectedConversation();
 		if (this.conversation == null) {
 			return;