带有shouldInterceptRequest覆盖的Android WebView即时崩溃

带有shouldInterceptRequest覆盖的Android WebView即时崩溃,第1张

概述我在使用AndroidWebView时遇到了一些“乐趣”.我使用它来显示登录屏幕,然后在响应时拦截身份验证代码.应该很简单…如果仅覆盖shouldOverrideUrlLoading但覆盖(就像AndroidStudio自动完成的那样),我的WebView就会加载并显示为绝对正常:overridefunshouldInterceptRequest(

我在使用Android WebVIEw时遇到了一些“乐趣”.

我使用它来显示登录屏幕,然后在响应时拦截身份验证代码.应该很简单…

如果仅覆盖shouldOverrIDeUrlLoading但覆盖(就像AndroID Studio自动完成的那样),我的WebVIEw就会加载并显示为绝对正常:

overrIDe fun shouldInterceptRequest(    vIEw: WebVIEw?,    request: WebResourceRequest?): WebResourceResponse {    return super.shouldInterceptRequest(vIEw, request)}

没有其他更改,它将在运行时立即崩溃,并发生本机崩溃

A/chromium: [FATAL:jni_androID.cc(259)]

其次是

A/libc: Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tID 16220 (TaskSchedulerFo), pID 16175 (eports.internal)

奇怪的是,如果我使响应为空,则WebVIEw可以再次工作.但是,将其他任何内容添加到shouldInterceptRequest方法中会使它掉落,并出现相同的错误.

所以这工作:

overrIDe fun shouldInterceptRequest(    vIEw: WebVIEw?,    request: WebResourceRequest?): WebResourceResponse? {    return super.shouldInterceptRequest(vIEw, request)}

但这会因上述崩溃而崩溃:

overrIDe fun shouldInterceptRequest(    vIEw: WebVIEw?,    request: WebResourceRequest?): WebResourceResponse? {    val url = vIEw?.url    return super.shouldInterceptRequest(vIEw, request)}

这似乎是一个很奇怪的问题,对我来说,为什么添加val分配根本没有任何区别是没有意义的.

我一直在研究错误,建议添加

webVIEw.destroy()

在活动/片段onDestroy / onDestroyVIEw中,不幸的是这没有帮助.

设备和仿真器以及AndroID SDK 22和28的行为相同.

有人看过这样的东西吗?我觉得我可能缺少明显的东西.

如果它也对生成了Breakpad Microdump的任何人有用,它太大了,无法在此问题中发布.但是,请告诉我它或其一部分可能有助于诊断!

解决方法:

我已找到问题所在,因此以为我会将其发布在这里给其他类似职位的人.

本机崩溃是由WebVIEw中运行的JavaScript引起的.

WebVIEw在后台线程中运行JavaScript,因此任何与UI线程相关的 *** 作都将导致JavaScript在本机级别崩溃.给上面非常无用的崩溃.

val分配导致崩溃的原因不是分配val,而是调用UIThread上的if?vIEw..url.

解决方案?

科特林:

webVIEw?.post{   // Do your UI work here.}

Java:

webVIEw.post(new Runnable(){    public voID run() {    // Do your UI work here.    }})

并且不要在覆盖的方法内触摸UIThread!

总结

以上是内存溢出为你收集整理的带有shouldInterceptRequest覆盖的Android WebView即时崩溃全部内容,希望文章能够帮你解决带有shouldInterceptRequest覆盖的Android WebView即时崩溃所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1081370.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存