gpt4 book ai didi

安卓漏洞 : WebViewCore fails with Assertion error

转载 作者:太空狗 更新时间:2023-10-29 12:56:49 26 4
gpt4 key购买 nike

不幸的是,我不能可靠地重现这个错误,但我很少得到它,偶尔它也会在实时崩溃日志中报告。这是用户使用 Droid 2.2.2 FRG83G

报告的堆栈跟踪
junit.framework.AssertionFailedError
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.assertTrue(Assert.java:20)
at junit.framework.Assert.assertNull(Assert.java:233)
at junit.framework.Assert.assertNull(Assert.java:226)
at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:594)
at java.lang.Thread.run(Thread.java:1096)

这似乎是由于 WebViewCore.java 中的这一行造成的

Assert.assertNull(sWebCoreHandler);

android.os.Handler 的私有(private)静态实例 sWebCoreHandler 是 不是 (感谢@Idolon 的更正) 已经初始化,但我不知道如何解决或防止此问题。

这种情况经常发生,足以让我担心。同样有趣的是,当应用程序正在加载甚至没有 WebView 的 Activity 时似乎会发生,尽管其中一个 Activity 确实有它。

附言这被归档为错误 # 16258

最佳答案

查看有罪的源代码...

public WebViewCore(Context context, WebView w, CallbackProxy proxy,
Map<String, Object> javascriptInterfaces) {

//....

// We need to wait for the initial thread creation before sending
// a message to the WebCore thread.
// XXX: This is the only time the UI thread will wait for the WebCore
// thread!
synchronized (WebViewCore.class) {
if (sWebCoreHandler == null) {
// Create a global thread and start it.
Thread t = new Thread(new WebCoreThread());

//...

}
}

//...

private static Handler sWebCoreHandler;
// Class for providing Handler creation inside the WebCore thread.
private static class WebCoreThread implements Runnable {
public void run() {
Looper.prepare();
Assert.assertNull(sWebCoreHandler); // this assertion fails
synchronized (WebViewCore.class) {
sWebCoreHandler = new Handler() {
//...

这在任何WebView的构造函数中执行,断言错误来自WebCoreThread构造函数,它仅在sWebCoreHandler时被调用是空的,所以这个断言永远不会失败......理论上。除了它在 synchronized 子句之外和在 synchronized 子句内创建和启动的新线程内运行,据说只有一次。

您的错误似乎与同时创建 WebView 有关。如果您的应用程序只有一个 Activity 和一个 webview,请确保该 Activity 的调用频率不超过必要(=一次一个),WebView 是在 onCreate 方法而不是 Activity 构造函数中创建的,startActivity 是在主线程中调用,你应该没问题。

关于安卓漏洞 : WebViewCore fails with Assertion error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5734170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com