Do not remove chatRoomListener in onPause, can lead to crashes

This commit is contained in:
Sylvain Berfini 2018-02-23 15:27:56 +01:00
parent bfa64e44ec
commit 8e4627d7da
4 changed files with 13 additions and 48 deletions

View file

@ -67,7 +67,6 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen
private ProgressBar mContactsFetchInProgress;
private SearchContactsListAdapter mSearchAdapter;
private String mChatRoomSubject, mChatRoomAddress;
private ChatRoom mChatRoom;
private ChatRoomListenerStub mChatRoomCreationListener;
@Override
@ -180,14 +179,6 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen
return view;
}
@Override
public void onPause() {
if (mChatRoom != null) {
mChatRoom.removeListener(mChatRoomCreationListener);
}
super.onPause();
}
private void displayChatCreation() {
mNextButton.setVisibility(View.VISIBLE);
mNextButton.setEnabled(mContactsSelected.size() > 0);
@ -325,9 +316,9 @@ public class ChatCreationFragment extends Fragment implements View.OnClickListen
Address participant = mContactsSelected.get(0).getAddress();
ChatRoom chatRoom = lc.findOneToOneChatRoom(lc.getDefaultProxyConfig().getContact(), participant);
if (chatRoom == null) {
mChatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
mChatRoom.addListener(mChatRoomCreationListener);
mChatRoom.addParticipant(participant);
chatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
chatRoom.addListener(mChatRoomCreationListener);
chatRoom.addParticipant(participant);
} else {
LinphoneActivity.instance().goToChat(chatRoom.getPeerAddress().asStringUriOnly());
}

View file

@ -66,7 +66,7 @@ public class GroupInfoFragment extends Fragment implements ChatRoomListener {
private boolean mIsEditionEnabled;
private ArrayList<ContactAddress> mParticipants;
private String mSubject;
private ChatRoom mChatRoom, mTempChatRoom;
private ChatRoom mChatRoom;
private Dialog mAdminStateChangedDialog;
private ChatRoomListenerStub mChatRoomCreationListener;
@ -215,8 +215,8 @@ public class GroupInfoFragment extends Fragment implements ChatRoomListener {
public void onClick(View view) {
if (!mIsAlreadyCreatedGroup) {
mWaitLayout.setVisibility(View.VISIBLE);
mTempChatRoom = LinphoneManager.getLc().createClientGroupChatRoom(mSubjectField.getText().toString());
mTempChatRoom.addListener(mChatRoomCreationListener);
ChatRoom room = LinphoneManager.getLc().createClientGroupChatRoom(mSubjectField.getText().toString());
room.addListener(mChatRoomCreationListener);
Address addresses[] = new Address[mParticipants.size()];
int index = 0;
@ -224,7 +224,7 @@ public class GroupInfoFragment extends Fragment implements ChatRoomListener {
addresses[index] = ca.getAddress();
index++;
}
mTempChatRoom.addParticipants(addresses);
room.addParticipants(addresses);
} else {
// Subject
String newSubject = mSubjectField.getText().toString();
@ -299,14 +299,6 @@ public class GroupInfoFragment extends Fragment implements ChatRoomListener {
return view;
}
@Override
public void onPause() {
if (mTempChatRoom != null) {
mTempChatRoom.removeListener(mChatRoomCreationListener);
}
super.onPause();
}
@Override
public void onDestroy() {
if (mChatRoom != null) {

View file

@ -54,7 +54,6 @@ public class ContactDetailsFragment extends Fragment implements OnClickListener
private LayoutInflater inflater;
private View view;
private boolean displayChatAddressOnly = false;
private ChatRoom mChatRoom;
private ChatRoomListenerStub mChatRoomCreationListener;
private OnClickListener dialListener = new OnClickListener() {
@ -79,9 +78,9 @@ public class ContactDetailsFragment extends Fragment implements OnClickListener
LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly());
} else {
mWaitLayout.setVisibility(View.VISIBLE);
mChatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
mChatRoom.addListener(mChatRoomCreationListener);
mChatRoom.addParticipant(participant);
room = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
room.addListener(mChatRoomCreationListener);
room.addParticipant(participant);
}
}
}
@ -139,14 +138,6 @@ public class ContactDetailsFragment extends Fragment implements OnClickListener
return view;
}
@Override
public void onPause() {
if (mChatRoom != null) {
mChatRoom.removeListener(mChatRoomCreationListener);
}
super.onPause();
}
public void changeDisplayedContact(LinphoneContact newContact) {
contact = newContact;
displayContact(inflater, view);

View file

@ -51,7 +51,6 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener {
private String sipUri, displayName, pictureUri;
private RelativeLayout mWaitLayout;
private LinphoneContact contact;
private ChatRoom mChatRoom;
private ChatRoomListenerStub mChatRoomCreationListener;
@Override
@ -119,14 +118,6 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener {
return view;
}
@Override
public void onPause() {
if (mChatRoom != null) {
mChatRoom.removeListener(mChatRoomCreationListener);
}
super.onPause();
}
private void displayHistory(String status, String callTime, String callDate) {
if (status.equals(getResources().getString(R.string.missed))) {
callDirection.setImageResource(R.drawable.call_missed);
@ -200,9 +191,9 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener {
LinphoneActivity.instance().goToChat(room.getPeerAddress().asStringUriOnly());
} else {
mWaitLayout.setVisibility(View.VISIBLE);
mChatRoom = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
mChatRoom.addListener(mChatRoomCreationListener);
mChatRoom.addParticipant(participant);
room = lc.createClientGroupChatRoom(getString(R.string.dummy_group_chat_subject));
room.addListener(mChatRoomCreationListener);
room.addParticipant(participant);
}
} else if (id == R.id.add_contact) {
Address addr = Factory.instance().createAddress(sipUri);