diff --git a/android/src/main/java/com/rnopentok/RNOpenTokSubscriberView.java b/android/src/main/java/com/rnopentok/RNOpenTokSubscriberView.java index f814770..8e4d045 100644 --- a/android/src/main/java/com/rnopentok/RNOpenTokSubscriberView.java +++ b/android/src/main/java/com/rnopentok/RNOpenTokSubscriberView.java @@ -68,8 +68,11 @@ private void attachSubscriberView() { } private void cleanUpSubscriber() { - removeView(mSubscriber.getView()); - mSubscriber = null; + if ( mSubscriber != null ) { + removeView(mSubscriber.getView()); + mSubscriber.destroy(); + mSubscriber = null; + } } public void onStreamReceived(Session session, Stream stream) { @@ -89,14 +92,18 @@ public void onStreamDropped(Session session, Stream stream) { public void onConnected(SubscriberKit subscriberKit) {} @Override - public void onDisconnected(SubscriberKit subscriberKit) {} + public void onDisconnected(SubscriberKit subscriberKit) { + cleanUpSubscriber(); + } @Override public void onError(SubscriberKit subscriberKit, OpentokError opentokError) { WritableMap payload = Arguments.createMap(); payload.putString("connectionId", opentokError.toString()); - + sendEvent(Events.EVENT_SUBSCRIBE_ERROR, payload); + + cleanUpSubscriber(); } }