相关疑难解决方法(0)

当WebView显示内容时是否有监听器?

使用WebViewClient和/或WebChromeClient,您可以在页面加载时获取侦听器,但是在WebView显示任何内容之前,有时会在WebView中包含任何内容之前调用它.

什么是确定WebView何时显示其内容的有效方法?

编辑:(试图更清楚)

当我在WebView中加载页面时,我想将滚动设置为特定位置.看起来在页面加载之前无法设置滚动位置,并且它具有实际的内容高度.因此,我尝试了两种不同的方法来确定页面何时完成加载,来自WebViewClient的onPageFinished()以及来自WebChromeClient的onProgressChanged().这两个都告诉我页面何时完成加载.

但问题是,有时在页面显示之前调用它,因此页面没有高度,滚动调用什么都不做.

我试图找到一种可靠的方法来确定页面何时可以滚动,即.当它的内容高度.

我想我可以在完成加载后设置一个检查循环,以便在高度可用时继续寻找,但这看起来很像黑客.希望有一种更清洁的方式.

events android listener webview

40
推荐指数
4
解决办法
4万
查看次数

在触及Android 4.2.2之前,WebView无法呈现

我正在开发一个名为Lightning Browser的开源浏览器,我在Android(4.2.2)的最新更新中遇到了一些麻烦.

在触摸视图之前,WebView将无法完全呈现.它只发生在最新的Android版本上.在4.2.1上,WebView呈现完全正常.我使用Nexus 7进行开发,在收到4.2.2更新后,浏览器停止渲染.其他用户也经历过这种情况,并且仅在4.2.2上多次确认.它正在针对API级别16和17进行,但我看到了一个针对API级别9的WebKit浏览器,没有出现此问题.

我试图使用我在Stack Overflow上找到的问题的解决方案来解决这个问题(Android WebView呈现空白/白色,视图不会更新css更改或HTML更改,动画不稳定).但是,单独将WebView的RenderPriority设置为high并不能解决它...在不触及的情况下使其呈现的唯一方法是将invalidate()命令放在WebView的OnDraw()方法中.这会导致WebView不断重绘.这样(有点),动画是平滑的,页面加载非常快,但它会导致WebView的性能下降.

我也看过这个问题(与我的非常相似),但没有好的答案.Android WebView无法在用户交互之前完全呈现内容

通过性能下降,我的意思是输入.文本输入滞后,WebView本身无法处理以前发生的事情.使用invalidate()方法调用对浏览器进行基准测试会使基准测试性能下降约8%.我知道基准测试不是一切,但它告诉我连续绘图使系统紧张并导致系统忽略其他任务.

结论... Android 4.2.2中的WebView在触摸之前不会呈现.我知道解决这个问题的唯一方法是在WebView的onDraw()方法中调用invalidate().这对性能不利,我正在寻找一种不同的方法来解决这个问题.

魔法代码(我目前正在使用)......

class MyWebView extends WebView
{
    @Override
    onDraw(Canvas canvas)
    {
        invalidate(); 
        super.OnDraw(canvas);
    }
}
Run Code Online (Sandbox Code Playgroud)

去掉

invalidate();
Run Code Online (Sandbox Code Playgroud)

直到触摸它才会渲染.

有没有人建议如何使WebView渲染(除了我做过)?顺便说一句,这是我在Stack上问过的第一个问题,如果我不清楚或者我做错了什么,请原谅我.

编辑:我在这里发现了一个关于类似问题的问题并且它已经解决,问题是,我不明白答案甚至意味着什么.如果有人能够启发我可能会有所帮助.

我在logcat中收到此错误

E/chromium(1243): external/chromium/net/disk_cache/backend_impl.cc:2022: [0705/172030:ERROR:backend_impl.cc(2022)] Corrupt Index file
Run Code Online (Sandbox Code Playgroud)

android android-webview

23
推荐指数
1
解决办法
2万
查看次数

Android WebView WebChromeClient:onProgressChanged()中的进度值不准确

我需要访问WebView中的进度值 - > WebChromeClient - > onProgressChanged().进度整数值不会从0增加到100,而是跳转.以下是加载一个页面的示例日志输出和相关的进度编号:

DEBUG:  progress : 10
DEBUG:  progress : 100
DEBUG:  progress : 10
DEBUG:  progress : 100
DEBUG:  progress : 10
DEBUG:  progress : 100
DEBUG:  progress : 10
DEBUG:  progress : 10
DEBUG:  progress : 100
DEBUG:  progress : 10
DEBUG:  progress : 100
DEBUG:  progress : 10
DEBUG:  progress : 100
DEBUG:  progress : 10
DEBUG:  progress : 100
DEBUG:  progress : 10
DEBUG:  progress : 30
DEBUG:  progress : 100
DEBUG: …
Run Code Online (Sandbox Code Playgroud)

android webview webchromeclient

5
推荐指数
2
解决办法
3585
查看次数