我想在WebView's
中获得Android
对象的深度。但我无法找到,所以我使用onPageStarted
和onPageFinished
开发。
boolean mIsInProgress = false;
int depth = 0;
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if(!mIsInProgress) {
depth++;
}
}
@Override
public void onPageFinished(WebView view, String url) {
if(mIsInProgress) {
mIsInProgress = false;
}
}
});
这是点击硬件返回键时减小深度的方法。
private void moveBack(){
if(!mIsInProgress) {
if (mWebView.canGoBack()) {
mWebView.goBack();
depth--;
} else if (mActivity != null) {
mActivity.finish();
}
mIsInProgress= true;
}
}
首先,我认为它真的很好用。但onPageStarted
和onPageFinished
有时间问题。
- WebView有1个深度。
- 点击任意链接移动页面。
- 后退 - >致电
onPageStarted
。- 在调用
onPageFinished
之前,通过点击任意链接移动页面。 - >致电onPageStarted
。- 致电
醇>onPageFinished
。
在3步和4步之间没有被称为onPageFinished
,因此不能在4步中增加深度。 (但我需要mIsInProgress
变量导致onPageStarted
有时会被调用两次。)
我如何准确地获得WebView的深度?
答案 0 :(得分:0)
您可以使用WebViewBackForwardList
(doc)返回的WebView.copyBackForwardList()
。在后退列表中,getCurrentIndex()
返回历史记录列表中的当前位置,列表的大小是整体历史记录深度。