gpt4 book ai didi

java - 呈现网页时 onPageFinished 未正确触发

转载 作者:搜寻专家 更新时间:2023-10-30 21:23:41 24 4
gpt4 key购买 nike

由于某种原因,onPageFinished 在 WebView 完成加载之前触发 - 我不明白为什么......

public class WebViewClientTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final WebView webview = (WebView) findViewById(R.id.webview);

webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(webview, url);
webview.scrollTo(0, 500);
}
});
webview.loadUrl("http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=lala");

}
}

好吧,看来这不是固定的。我认为加载页面时存在竞争条件,但无法获得可重现的行为。

我将网页的 HTML 内容存储在 SQLite 数据库中,以便在离线时查看。我将内容重新加载到 WebView 中:

webView.loadDataWithBaseURL("fake://fake.com/", htmlBody, "text/html", "utf-8", null);

似乎有时当 WebView 加载时它会正确触发 WebViewClient.onPageFinished() 方法,而其他时候则不会。有时它似乎在页面加载完成之前触发,产生 contentHeight 为 0 并忽略任何 scrollTo 调用。

有人有这方面的经验吗?

最佳答案

我有一个项目的代码只需要在 webview 显示它的内容后运行,和你一样,onPageFinished() 不工作。它触发得太快,在 webview 实际呈现页面之前。

相反,我不得不使用“PictureListener”,它会在 webview 实际更新屏幕时触发。

你可以这样使用它:

mWebView.setPictureListener(new MyPictureListener());
//... and then later on....
class MyPictureListener implements PictureListener {

@Override
public void onNewPicture(WebView view, Picture arg1) {
// put code here that needs to run when the page has finished loading and
// a new "picture" is on the webview.
}
}

关于java - 呈现网页时 onPageFinished 未正确触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3702627/

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