diff --git a/packages/camera/camera_android/CHANGELOG.md b/packages/camera/camera_android/CHANGELOG.md index 024836d6f43e..f2417fb20645 100644 --- a/packages/camera/camera_android/CHANGELOG.md +++ b/packages/camera/camera_android/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 0.10.0+2 +* Removes call to `join` on the camera's background `HandlerThread`. * Updates minimum Flutter version to 2.10. ## 0.10.0+1 diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java index 401963c91374..3d2df98b60da 100644 --- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java +++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java @@ -131,8 +131,6 @@ class Camera /** An additional thread for running tasks that shouldn't block the UI. */ private HandlerThread backgroundHandlerThread; - /** True when backgroundHandlerThread is in the process of being stopped. */ - private boolean stoppingBackgroundHandlerThread = false; private CameraDeviceWrapper cameraDevice; private CameraCaptureSession captureSession; @@ -671,21 +669,11 @@ public void startBackgroundThread() { /** Stops the background thread and its {@link Handler}. */ public void stopBackgroundThread() { - if (stoppingBackgroundHandlerThread) { - return; - } if (backgroundHandlerThread != null) { - stoppingBackgroundHandlerThread = true; backgroundHandlerThread.quitSafely(); - try { - backgroundHandlerThread.join(); - } catch (InterruptedException e) { - dartMessenger.error(flutterResult, "cameraAccess", e.getMessage(), null); - } } backgroundHandlerThread = null; backgroundHandler = null; - stoppingBackgroundHandlerThread = false; } /** Start capturing a picture, doing autofocus first. */ diff --git a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraTest.java b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraTest.java index b85b685ca90b..9a679017ded2 100644 --- a/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraTest.java +++ b/packages/camera/camera_android/android/src/test/java/io/flutter/plugins/camera/CameraTest.java @@ -838,25 +838,12 @@ public void startBackgroundThread_shouldNotStartNewThreadWhenAlreadyCreated() { } @Test - public void stopBackgroundThread_cancelsDuplicateCalls() throws InterruptedException { - TestUtils.setPrivateField(camera, "stoppingBackgroundHandlerThread", true); - - camera.startBackgroundThread(); - camera.stopBackgroundThread(); - - verify(mockHandlerThread, never()).quitSafely(); - verify(mockHandlerThread, never()).join(); - } - - @Test - public void stopBackgroundThread_proceedsWithoutDuplicateCall() throws InterruptedException { - TestUtils.setPrivateField(camera, "stoppingBackgroundHandlerThread", false); - + public void stopBackgroundThread_quitsSafely() throws InterruptedException { camera.startBackgroundThread(); camera.stopBackgroundThread(); verify(mockHandlerThread).quitSafely(); - verify(mockHandlerThread).join(); + verify(mockHandlerThread, never()).join(); } @Test diff --git a/packages/camera/camera_android/pubspec.yaml b/packages/camera/camera_android/pubspec.yaml index afb40dee33c5..9f5a2f2b9c16 100644 --- a/packages/camera/camera_android/pubspec.yaml +++ b/packages/camera/camera_android/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_android description: Android implementation of the camera plugin. repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.10.0+1 +version: 0.10.0+2 environment: sdk: ">=2.14.0 <3.0.0"