我对 Tabs 中的 ZXing 二维码有疑问。我有 3 个片段,其中一个实现了 ZXing QR,我正在替换选项卡切换上的片段。我的片段类中有以下代码。主要问题是当我顺利切换标签时一切正常。但是当我一次又一次地快速切换标签时,CameraView 变黑了,应用程序的每个线程和 AsychTask 都停止工作。这个问题正在破坏我的整个应用程序。
这是 Fragment 的 OnResume 方法的代码。ScanningThread 是一个用 Thread 扩展的类,scanningView 是一个自定义的 CameraView 类。
ScanningThread scanningThread = new ScanningThread();
scanningThread.setScanListener(scanListener);
scannerView.onResume();
scannerView.setPreviewCallback(scanningThread);
scanningThread.start();
这是 onPause 方法的代码。
this.scannerView.onPause();
this.scanningThread.stopScanning();
这是我的 CameraView 类的 setPreviewCallBack 方法:
public void setPreviewCallback(final @NonNull PreviewCallback previewCallback) {
enqueueTask(new PostInitializationTask<Void>() {
@Override
protected void onPostMain(Void avoid) {
if (camera.isPresent()) {
camera.get().setPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
if (!CameraView.this.camera.isPresent()) {
return;
}
final int rotation = getCameraPictureOrientation();
final Size previewSize = camera.getParameters().getPreviewSize();
if (data != null) {
previewCallback.onPreviewFrame(new PreviewFrame(data, previewSize.width, previewSize.height, rotation));
}
}
});
}
}