diff --git a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java index 0521c422d794..227bcc2ae308 100644 --- a/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java +++ b/packages/camera/camera/android/src/main/java/io/flutter/plugins/camera/Camera.java @@ -672,11 +672,12 @@ public void stopBackgroundThread() { if (backgroundHandlerThread != null) { backgroundHandlerThread.quitSafely(); try { - backgroundHandlerThread.join(); + backgroundHandlerThread.join(2500); } catch (InterruptedException e) { dartMessenger.error(flutterResult, "cameraAccess", e.getMessage(), null); } } + backgroundHandlerThread = null; backgroundHandler = null; } @@ -1090,7 +1091,9 @@ public void onListen(Object o, EventChannel.EventSink imageStreamSink) { @Override public void onCancel(Object o) { - imageStreamReader.setOnImageAvailableListener(null, backgroundHandler); + if (imageStreamReader != null) { + imageStreamReader.setOnImageAvailableListener(null, backgroundHandler); + } } }); } @@ -1198,7 +1201,6 @@ public void close() { public void dispose() { Log.i(TAG, "dispose"); - close(); flutterTexture.release(); getDeviceOrientationManager().stop();