java - 在 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()
}
}
解决方案
推荐阅读
- c# - C# LINQ Group By 具有自定义属性的多个字段
- opengl - 直接将输入纹理复制到输出会在 OpenGL 中产生意想不到的结果
- html - 如果未指定 DIV 的宽度,是否始终默认为 100%?
- java - oracle java官方文档中处理器的吞吐量是多少?
- node.js - 从 dev env 将 React 应用程序部署到 Heroku 后,Fetch 请求中断 - 所有 GET 请求都返回 index.html - 其他是 404
- python - image.size 没有给出正确的图像尺寸
- node.js - 在 Bot Framework 中,我应该使用什么唯一 ID 来保存会话?
- c - 如何使用 SWIG/Python 访问仅具有指针 typedef 的结构的值
- r - 如何创建具有 1 个自变量和 3 个因变量的计数和百分比表和折线图
- bash - 为什么交互式 shell 的子 shell 作为交互式 shell 运行?