From 8bb8321490bbf93ffef01018a7a249d38d835900 Mon Sep 17 00:00:00 2001 From: csantosm <4a.santos@gmail.com> Date: Mon, 10 Aug 2020 13:31:00 +0200 Subject: [PATCH] openvidu-android: Fixed crash leaving session --- .../openvidu_android/openvidu/Session.java | 37 +++++++++++-------- .../app/src/main/res/values/strings.xml | 2 +- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/openvidu-android/app/src/main/java/io/openvidu/openvidu_android/openvidu/Session.java b/openvidu-android/app/src/main/java/io/openvidu/openvidu_android/openvidu/Session.java index b71797db..f153f246 100644 --- a/openvidu-android/app/src/main/java/io/openvidu/openvidu_android/openvidu/Session.java +++ b/openvidu-android/app/src/main/java/io/openvidu/openvidu_android/openvidu/Session.java @@ -1,5 +1,6 @@ package io.openvidu.openvidu_android.openvidu; +import android.os.AsyncTask; import android.util.Log; import android.view.View; import android.widget.LinearLayout; @@ -195,22 +196,28 @@ public class Session { } public void leaveSession() { - websocket.setWebsocketCancelled(true); - if (websocket != null) { - websocket.leaveRoom(); - websocket.disconnect(); - } - this.localParticipant.dispose(); - for (RemoteParticipant remoteParticipant : remoteParticipants.values()) { - if (remoteParticipant.getPeerConnection() != null) { - remoteParticipant.getPeerConnection().close(); + AsyncTask.execute(() -> { + websocket.setWebsocketCancelled(true); + if (websocket != null) { + websocket.leaveRoom(); + websocket.disconnect(); } - views_container.removeView(remoteParticipant.getView()); - } - if (peerConnectionFactory != null) { - peerConnectionFactory.dispose(); - peerConnectionFactory = null; - } + this.localParticipant.dispose(); + }); + this.activity.runOnUiThread(() -> { + for (RemoteParticipant remoteParticipant : remoteParticipants.values()) { + if (remoteParticipant.getPeerConnection() != null) { + remoteParticipant.getPeerConnection().close(); + } + views_container.removeView(remoteParticipant.getView()); + } + }); + AsyncTask.execute(() -> { + if (peerConnectionFactory != null) { + peerConnectionFactory.dispose(); + peerConnectionFactory = null; + } + }); } public void removeView(View view) { diff --git a/openvidu-android/app/src/main/res/values/strings.xml b/openvidu-android/app/src/main/res/values/strings.xml index d8b4b469..146e2b2a 100644 --- a/openvidu-android/app/src/main/res/values/strings.xml +++ b/openvidu-android/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - WebRTCExampleApp + OpenVidu Android Sample Join Session Name SessionA