Android错误:WebViewCore失败并出现断言错误

Android错误:WebViewCore失败并出现断言错误,第1张

概述不幸的是,我无法可靠地重现此错误,但很少得到此错误,偶尔也会在实时崩溃日志中报告该错误.这是用户使用Droid2.2.2FRG83G报告的堆栈跟踪junit.framework.AssertionFailedErroratjunit.framework.Assert.fail(Assert.java:47)atjunit.framework.Assert.assertTrue(Assert.ja

不幸的是,我无法可靠地重现此错误,但很少得到此错误,偶尔也会在实时崩溃日志中报告该错误.这是用户使用DroID 2.2.2 FRG83G报告的堆栈跟踪

junit.framework.AssertionFailedErrorat 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的私有静态实例sWebCoreHandler(感谢@IDolon进行更正),但是我不知道如何解决或防止此问题.

这种情况经常发生,足以让我担心.当应用程序正在加载甚至没有WebVIEw的Activity时,似乎也发生了有趣的事情,尽管其中一项活动确实具有WebVIEw.

附言这被记录为错误#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为null时才调用该断言,因此,从理论上讲,该断言永远不会失败.除非它在synced子句之外运行,并且在一个新的Thread中运行,而该新线程在Synchronized子句中创建并启动,据说只能运行一次.

看来您的错误与并发创建WebvIEw有关.如果您的应用程序只有一个活动和一个WebvIEw,请确保该活动的调用次数不超过必要次数(一次调用一次),并确保WebVIEw是在onCreate方法而不是活动构造函数中创建的,而startActivity是在主线程中调用,您应该会很好.

总结

以上是内存溢出为你收集整理的Android错误:WebViewCore失败并出现断言错误全部内容,希望文章能够帮你解决Android错误:WebViewCore失败并出现断言错误所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1071325.html

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

发表评论

登录后才能评论

评论列表(0条)

保存