Javascript setTimeout有时不会在WebView中触发

时间:2017-06-03 11:45:51

标签: javascript android angular android-webview

我们有一个小型Android应用程序,主要由WebView组成。在这个WebView中,我们加载了Angular 2 App(Angular 2.4),它定期轮询API。为了定期触发轮询,我们使用递归调用:

private xxx() {
  console.log("Beginning of xxx");
  ...
  http.get(url).then( => {
    console.log("Before setTimeout");
    setTimeout(() => xxx(), 300);
  });
}

轮询通常效果很好,但是,经过一段时间(约1-2分钟),轮询停止。从我们的日志记录中,我们可以看到设置了超时(上面的第二个日志行),但是没有调用回调。

到目前为止我们已经尝试/学到的东西:

  • 在同一台设备上查看Chrome中的应用无法重现此问题
  • 通过Chrome开发工具进行远程调试可以解决问题
  • 触摸事件会让应用重新开始投票

Android版6.0 API级别:23

1 个答案:

答案 0 :(得分:0)

通过将system.android.WebView从版本46.0.2490.76更新为58.0.3029.83来解决此问题。