Android Webview-未调用onPageFinished
在我的应用程序中,我想在后台缓存一个带有隐藏webview的WebPage,同时用户可以看到另一个webview并加载另一个url。 我在onResume中启动缓存。以下是代码片段: 一,。简历:Android Webview-未调用onPageFinished,android,caching,webview,Android,Caching,Webview,在我的应用程序中,我想在后台缓存一个带有隐藏webview的WebPage,同时用户可以看到另一个webview并加载另一个url。 我在onResume中启动缓存。以下是代码片段: 一,。简历: @Override public void onResume() { new LibraryCacher().startCaching(this); //some more code... } 二,。图书馆缓存: public class Librar
@Override
public void onResume() {
new LibraryCacher().startCaching(this);
//some more code...
}
二,。图书馆缓存:
public class LibraryCacher extends BasicClass {
public LibraryCacher () {}
public void startCaching(Context context) {
getLogger().debug("startCaching()");
if (NetworkHandler.isOnline(context) == false) {
getLogger().info("We are offline, no caching");
return;
}
final String URL_TO_CACHE = "http://myUrl.com";
WebView w = new WebView(context);
w.setVisibility(View.GONE);
WebSettings webset = w.getSettings();
webset.setJavaScriptEnabled(true);
webset.setDomStorageEnabled(true);
webset.setDatabaseEnabled(true);
webset.setJavaScriptCanOpenWindowsAutomatically(true);
webset.setSupportMultipleWindows(true);
webset.setAppCacheEnabled(true);
webset.setLoadsImagesAutomatically(true);
webset.setAppCachePath(w.getContext().getCacheDir().getAbsolutePath());
webset.setAllowFileAccess(true);
webset.setCacheMode(WebSettings.LOAD_DEFAULT);
w.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
getLogger().debug(url + " caching...");
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
getLogger().debug(url + "cached");
}
});
w.setWebChromeClient(new WebChromeClient());
getLogger().debug("load Url");
w.loadUrl(URL_TO_CACHE);
}
}
在FIRST-CACHE-TRY应用程序第一次启动时,logcat如下所示:
起动
加载Url
缓存。。。
之后,我把应用程序放在后台,然后继续。因此,在SECOND-CACHE-TRY logcat中,它是这样的:
起动
加载URL
缓存。。。
缓存
我的问题:
为什么webview在第一次尝试时不调用其方法onPageFinished
编辑:
如果我调用
new LibraryCacher().startCaching(this);
在另一个Web视图的onPageFinished中,该视图对用户可见,并同时加载另一个url。
有人知道为什么吗 android中的网络视图似乎有一些共享状态。就我而言,onPageFinished从未被调用,因为我使用了:
@Override
public void onPause() {
webView.pauseTimers();
}
在完全不同的webview上,在不同的活动中。您必须重新开始执行指定的功能。尝试对onCreate或onStartNow执行此操作,会调用onpageStarted方法,但不会调用onPageFinished方法。我编辑了我的帖子。@JeremyMiller:onCreate对我来说是没有选择的,因为我想在应用程序在后台的特定时间段后刷新缓存