我在Android应用程序中有一个包含本机UI元素和WebView的活动。 WebView通常是隐藏的(Visibility.GONE
),它在后台执行偶尔的工作""在它的JavaScript循环上。在特定按钮上单击,WebView变为可见,用户可以看到该网页。在随后的按钮单击中,将再次隐藏WebView。用户可以重复此过程。
当用户按下按钮以使WebView可见时,我添加了对WebView.postVisualStateCallback
的调用。我只在VisualStateCallback.onComplete
期间显示WebView。这很好用户第一次点击按钮,我可以看到WebView。但是,在用户关闭WebView并将其再次隐藏后,我无法重复此过程。随后对WebView.postVisualStateCallback
永远的调用会导致另一次调用VisualStateCallback.onComplete
。
mWebView.postVisualStateCallback(++mWebViewVisualStateCallback, new WebView.VisualStateCallback() {
@Override
public void onComplete(long requestId) {
if (requestId == mWebViewVisualStateCallback) {
mWebView.setVisibility(View.VISIBLE);
}
}
});
我不导航到WebView中的新网页。该网页本质上是一个长寿命的单页应用程序。当WebView处于后台时,DOM可能会在WebView中发生变化,这就是我尝试随后调用WebView.postVisualStateCallback
的原因。我正在使用Oreo 8.1 / API 27在模拟器和Pixel 2上进行测试。
是否可以在同一主框架上多次使用WebView.postVisualStateCallback
?为什么WebView.postVisualStateCallback
只能使用一次?