Unbind/close 打开新片段时的所有 cameraX 组件

Unbind/close all cameraX components when opening new fragment

private Executor executor = Executors.newSingleThreadExecutor();
captureImage.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        imageCapture.takePicture(executor, new ImageCapture.OnImageCapturedCallback() {
            @SuppressLint("UnsafeExperimentalUsageError")
            @Override
            public void onCaptureSuccess(@NonNull ImageProxy image) {

                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        cameraProvider.unbind(preview);
                    }
                });

                FragmentCroppImage fragment2 = new FragmentCroppImage();
                FragmentManager fragmentManager =  getFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.replace(R.id.frameLHaupt, fragment2);
                fragmentTransaction.commit();

            }

            @Override
            public void onError(@NonNull ImageCaptureException exception) {
                exception.printStackTrace();
            }
        });
    }
});

上面有一个简单的代码。当我拍照时,我打开新片段。 没问题,但问题是当我 return 到 cameraX 片段 (popbackstack) ) 收到以下错误:Attempting to bind too many ImageCapture or VideoCapture instances.

经过研究,我阅读了以下答案:answer我需要取消绑定我所做的 cameraX 组件,但我研究了同样的错误。

所以现在我卡住了。原因是什么?看来我需要在图像捕获之前取消绑定元素?

我解决了这个问题: 我已经解除绑定只是预览。取消绑定每个组件解决了问题:

getActivity().runOnUiThread(new Runnable() {
  @Override
  public void run() { cameraProvider.unbindAll(); }  
});