Web Worker 是在主 ui android 线程还是单独的线程上运行?

Posted

技术标签:

【中文标题】Web Worker 是在主 ui android 线程还是单独的线程上运行?【英文标题】:Does a Web Worker run on the main ui android thread or a separate thread? 【发布时间】:2019-03-09 00:18:59 【问题描述】:

我有一个使用 WebChromeClient 的 android 旧应用程序

公共类 MyWebViewClient 扩展了 WebChromeClient

在 Android 上运行网页作为应用程序最初的意图是保持应用(浏览器、ios 和 android)的显示相同。 通常情况下,随着时间的推移(5 年),应用程序变得越来越复杂,并且使用本地 Web 数据库来存储状态以加快启动速度。

使用最新版本的 Android Oreo OS,我的应用收到 ANR 警告。我意识到现在是重新设计的时候了,但日程安排非常紧凑。 如果我将初始化代码(使用回调(承诺)的网络数据库,...)移动到 html 5 web worker 中,该代码会在 Android 应用程序的单独线程上运行(除了主 ui 线程吗?) 这会解决 ANR 问题吗?还是我必须完全重新设计?

顺便说一句 - 在最新的 IOS 中,网络工作者是在主线程上运行还是在单独的线程上运行?

提前感谢您的意见。

【问题讨论】:

【参考方案1】:

webview 不在 Android UI 线程上运行。这个问题根本与网络视图无关。相反,ANR 是已知的 Android Oreo 更改。我能够通过以下方式修复它 this post

【讨论】:

以上是关于Web Worker 是在主 ui android 线程还是单独的线程上运行?的主要内容,如果未能解决你的问题,请参考以下文章

Web Worker的使用

Web Worker

web worker 与 service worker

Web Worker

Android Handler 的使用

怎么使用Web Workers提升性能?