diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index c6d39a9c8..7af9345f2 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -1243,6 +1243,8 @@ public class LinphoneActivity extends FragmentActivity implements protected void onResume() { super.onResume(); + // Remove to avoid duplication of the listeners + LinphoneManager.removeListener(this); LinphoneManager.addListener(this); prepareContactsInBackground(); @@ -1267,15 +1269,15 @@ public class LinphoneActivity extends FragmentActivity implements } @Override - protected void onPause() { - LinphoneManager.removeListener(this); - + protected void onPause() { super.onPause(); refreshStatus(OnlineStatus.Away); } @Override protected void onDestroy() { + LinphoneManager.removeListener(this); + if (chatStorage != null) { chatStorage.close(); chatStorage = null; diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index ed4e8b750..65f990cef 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -48,6 +48,7 @@ import java.util.TimerTask; import org.linphone.LinphoneSimpleListener.LinphoneOnAudioChangedListener; import org.linphone.LinphoneSimpleListener.LinphoneOnAudioChangedListener.AudioState; +import org.linphone.LinphoneSimpleListener.LinphoneOnMessageReceivedListener; import org.linphone.LinphoneSimpleListener.LinphoneServiceListener; import org.linphone.core.CallDirection; import org.linphone.core.LinphoneAddress; @@ -943,7 +944,7 @@ public final class LinphoneManager implements LinphoneCoreListener { @Override public void messageReceived(LinphoneCore lc, LinphoneChatRoom cr, LinphoneChatMessage message) { for (LinphoneSimpleListener listener : getSimpleListeners(LinphoneActivity.class)) { - ((LinphoneActivity) listener).onMessageReceived(message.getFrom(), message); + ((LinphoneOnMessageReceivedListener) listener).onMessageReceived(message.getFrom(), message); } }