Проблема с QR-кодом ZXing во время переключения вкладок в Android

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

Вот код метода OnResume Fragment. 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();

Вот мой метод 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));
              }
            }
          });
        }
      }

person Muhammad Zahab Ahmad Khan    schedule 23.01.2020    source источник


Ответы (1)


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

person chdanish    schedule 30.01.2020
comment
Я думаю, это взлом. Мне нужно правильное решение, потому что я работаю над приложением для обмена сообщениями, и из-за этой проблемы мои сообщения перестали работать после зависания потока. - person Muhammad Zahab Ahmad Khan; 30.01.2020