打开新片段时取消绑定/关闭所有 cameraX 组件
Posted
技术标签:
【中文标题】打开新片段时取消绑定/关闭所有 cameraX 组件【英文标题】:Unbind/close all cameraX components when opening new fragment 【发布时间】:2021-07-19 05:52:25 【问题描述】: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();
);
);
我上面有一个简单的代码。当我拍照时,我会打开新片段。
没问题,但问题是当我返回 cameraX fragment (popbackstack) 时收到以下错误:Attempting to bind too many ImageCapture or VideoCapture instances
。
研究后,我阅读了以下答案:answer 我需要解绑我所做的 cameraX 组件,但我研究了同样的错误。
所以现在我被困住了。可能是什么原因?看来我需要在图像捕获之前取消绑定元素?
【问题讨论】:
【参考方案1】:我解决了这个问题: 我只解绑了预览。解除绑定每个组件解决了这个问题:
getActivity().runOnUiThread(new Runnable()
@Override
public void run() cameraProvider.unbindAll();
);
【讨论】:
以上是关于打开新片段时取消绑定/关闭所有 cameraX 组件的主要内容,如果未能解决你的问题,请参考以下文章