android webview崩溃处理,android webview shouldinterceptrequest覆盖即时崩溃
我在用android网络视图玩得很开心。我使用它来显示登录屏幕,然后在响应时截获验证代码。应该很简单…如果我只重写shouldroverrideurlloading,但如果我重写(就像android studio自动完成的那样),则我的webview加载和显示非常好:override fun shouldInterceptRequest(view: WebView?,request: WebRes
我在用android网络视图玩得很开心。
我使用它来显示登录屏幕,然后在响应时截获验证代码。应该很简单…
如果我只重写shouldroverrideurlloading,但如果我重写(就像android studio自动完成的那样),则我的webview加载和显示非常好:
override fun shouldInterceptRequest(
view: WebView?,
request: WebResourceRequest?
): WebResourceResponse {
return super.shouldInterceptRequest(view, request)
}
在没有其他更改的情况下,它会在运行时立即崩溃,并发生本机崩溃
a/chromium:[致命:jni_android.cc(259)]
然后
a/libc:致命信号6(sigabrt),tid 16220(taskschedulerfo)中的代码-6(si_tkill),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()
在activity/fragments ondestroy/ondestroyview中,不幸的是这没有帮助。
在设备和模拟器以及android sdk 22和28上的行为是相同的。
以前有人见过这样的东西吗?我觉得我可能遗漏了一些显而易见的东西。
如果它对任何人都有用的话,我还生成了breakpad microdump,它太大了,不能在这个问题上发表。但让我知道,如果它,或它的一个子集,可能有助于诊断!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)