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

Does a Web Worker run on the main ui android thread or a separate thread?

我有一个旧的 Android 应用程序,它使用 WebChromeClient

public class MyWebViewClient extends WebChromeClient

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

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

Does a Web Worker run on the main ui android thread or a separate thread? BTW - how about in the latest IOS, are web workers run on the main thread or separate thread?

提前感谢您的意见。

Web 视图不在 Android UI 线程上 运行。该问题与网络视图完全无关。相反,ANR 是一个已知的 Android Oreo 变化。我能够通过以下方式修复它 this post