首页 > 解决方案 > 在 Android 6.0 选项卡上返回 OnResume 时视图冻结

问题描述

此问题仅在 Android 6.0 平板电脑上出现。

fileObserver用来获取保存的图像路径并在我的应用程序和 Firebase ML 套件中显示该图像,以检查该图像中存在的文本的可读性。

我首先打开第三方应用程序为我的应用程序捕获图像,当我单击图片时,会生成一个后台线程,并且 UI 中会显示一个带有文本消息的进度条。

一旦 firebase ML kit 完成它的工作,文档是否可读的结果就会保存在一个对象中。

现在,只要我关闭第三方应用程序并返回到我的应用程序(onResume()),代码就会执行以在 ImageView 上设置图像并隐藏进度条,但是 UI 会被进度条冻结,并且只有当我单击屏幕上的任意位置时 UI 才会更新.

public class DocFragment extends Fragment{
   private FileObserver observer = new FileObserver(LENS_DIR_PATH) {
        @Override
        public void onEvent(int event, @Nullable String path) {
             if (event == CLOSE_WRITE) {
                  String attachedImagePath = LENS_DIR_PATH + path;
//                Log.v(TAG, "File was saved: " + LENS_DIR_PATH + path);

                  processDoc(attachedImagePath);
             }
        }
  };

  @Override
  public void onStop() {

        super.onStop();
        observer.startWatching();

  }

   @Override
   public void onResume() {

        super.onResume();
        observer.stopWatching();

    }
}
    class DocProvider {

        fun processDoc(path: String) {
            Executors.newSingleThreadExecutor().execute {
                semaphore.acquire()
              activity.runOnUiThread {
                  showProgressBar()
              }
            }
            // Image processing and updating the result after showing Progress Bar 
            updateResult()
        }

        private fun updateResult() {
            docResult.updateResult()
            semaphore.release()
        }
}

标签: javaandroidkotlin

解决方案


推荐阅读