Fix leak in recording session.
This commit is contained in:
parent
5febe6490c
commit
eceed641bf
2 changed files with 19 additions and 2 deletions
|
@ -3376,6 +3376,8 @@ public class ConversationParentFragment extends Fragment
|
|||
|
||||
voiceNoteMediaController.pausePlayback();
|
||||
recordingSession = new RecordingSession(audioRecorder.startRecording());
|
||||
|
||||
disposables.add(recordingSession);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -3685,10 +3687,11 @@ public class ConversationParentFragment extends Fragment
|
|||
|
||||
// Listeners
|
||||
|
||||
private class RecordingSession implements SingleObserver<VoiceNoteDraft> {
|
||||
private class RecordingSession implements SingleObserver<VoiceNoteDraft>, Disposable {
|
||||
|
||||
private boolean saveDraft = true;
|
||||
private boolean shouldSend = false;
|
||||
private Disposable disposable = Disposable.empty();
|
||||
|
||||
RecordingSession(Single<VoiceNoteDraft> observable) {
|
||||
observable.observeOn(AndroidSchedulers.mainThread()).subscribe(this);
|
||||
|
@ -3696,6 +3699,7 @@ public class ConversationParentFragment extends Fragment
|
|||
|
||||
@Override
|
||||
public void onSubscribe(@io.reactivex.rxjava3.annotations.NonNull Disposable d) {
|
||||
this.disposable = d;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -3709,12 +3713,15 @@ public class ConversationParentFragment extends Fragment
|
|||
draftViewModel.saveEphemeralVoiceNoteDraft(draft.asDraft());
|
||||
}
|
||||
}
|
||||
|
||||
recordingSession.dispose();
|
||||
recordingSession = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable t) {
|
||||
Toast.makeText(requireContext(), R.string.ConversationActivity_unable_to_record_audio, Toast.LENGTH_LONG).show();
|
||||
recordingSession.dispose();
|
||||
recordingSession = null;
|
||||
}
|
||||
|
||||
|
@ -3734,6 +3741,16 @@ public class ConversationParentFragment extends Fragment
|
|||
this.shouldSend = true;
|
||||
audioRecorder.stopRecording();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
disposable.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisposed() {
|
||||
return disposable.isDisposed();
|
||||
}
|
||||
}
|
||||
|
||||
private class QuickCameraToggleListener implements OnClickListener {
|
||||
|
|
|
@ -205,7 +205,7 @@ public class ConversationViewModel extends ViewModel {
|
|||
|
||||
scheduledMessageCount = threadId
|
||||
.observeOn(Schedulers.io())
|
||||
.flatMap(scheduledMessagesRepository::getScheduledMessageCount);
|
||||
.switchMap(scheduledMessagesRepository::getScheduledMessageCount);
|
||||
|
||||
Observable<Recipient> liveRecipient = recipientId.distinctUntilChanged().switchMap(id -> Recipient.live(id).asObservable());
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue