首页 > 解决方案 > 安卓切换Tab时ZXing二维码问题

问题描述

我对 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));
              }
            }
          });
        }
      }

标签: androidmultithreadingasynchronouszxingcamera-view

解决方案


我通过在线程处理时禁用选项卡解决了类似的问题。


推荐阅读