android - 安卓切换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));
}
}
});
}
}
解决方案
我通过在线程处理时禁用选项卡解决了类似的问题。
推荐阅读
- javascript - 在 ExtJS 3.4 中更改工具的持续时间
- nightmare - Nightmarejs 不在服务器上呈现 javascript
- tree - 在 Lisp 中逐级遍历树(广度优先)
- npm - NPM 挂起并卡在发布/打包上
- google-analytics - 谷歌分析服务器端归因和 gclid,它是如何工作的?
- python - 错误处理问题,似乎无法识别错误
- java - 在向用户显示随机对象时使用访问器方法?
- r - 有效地组合跨越相同范围的多个 irange(保留 mcols)
- javascript - 使用自动播放来播放使用 HTML5 音频的广播电台
- python - 如何从numpy数组中的所有元素中删除一个值