Проблема с QR-кодом ZXing при переключении табуляции в Android - PullRequest
2 голосов
/ 23 января 2020

У меня проблема с QR-кодом ZXing внутри вкладок. У меня есть 3 фрагмента, один из которых с внедренным ZXing QR, и я заменяю фрагменты при переключении вкладок. У меня есть следующий код в моем классе фрагментов. Основная проблема - когда я плавно переключал вкладки, все работало нормально. Но когда я снова и снова быстро переключал вкладки, то CameraView становился черным, и все потоки и AsychTask приложения перестали работать . Эта проблема уничтожает все мое приложение.

Вот код метода OnResume фрагмента. ScanningThread - это класс, расширенный с помощью Thread, а scannerView - это пользовательский класс CameraView.

    ScanningThread scanningThread = new ScanningThread();
    scanningThread.setScanListener(scanListener);
    scannerView.onResume();
    scannerView.setPreviewCallback(scanningThread);
    scanningThread.start();

Вот код метода onPause.

        this.scannerView.onPause();
        this.scanningThread.stopScanning();

Вот мой метод setPreviewCallBack класса CameraView:

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

1 Ответ

0 голосов
/ 30 января 2020

У меня была похожая проблема, решенная путем отключения вкладок во время обработки потока.

...