【问题标题】:ZXing QR code issue during Tab Switching in Android安卓切换Tab时ZXing二维码问题
【发布时间】:2020-05-09 13:05:24
【问题描述】:

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

【问题讨论】:

    标签: android multithreading asynchronous zxing camera-view


    【解决方案1】:

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

    【讨论】:

    • 我认为这是一个 hack。我需要一个合适的解决方案,因为我正在开发一个消息传递应用程序,并且由于这个问题,一旦线程卡住,我的消息就会停止工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多