我正在使用WebView在我的Android应用中播放YouTube视频。 它工作正常,但我似乎遇到了Jelly Bean的问题(也许是后来的版本,我还不知道)。
我第一次播放视频时效果很好,但是当我尝试再次播放或者再播放另一个视频时,关闭WebView并重新打开后,我看到视频加载但是然后进入暂停模式(如图中所示)。
关闭WebView时,我正在使用此代码,我认为这是导致问题的原因:
Class.forName("android.webkit.WebView").getMethod("onPause", (Class[]) null).invoke(webview, (Object[]) null);
有人遇到这个问题吗?
左图 - 视频正常播放。
中间图像 - 尝试再次加载。
正确的图像 - 视频已暂停且从未启动过。
这是我正在使用的代码:
private void loadUrl()
{
progress.setVisibility(View.VISIBLE);
webview.setWebChromeClient(new WebChromeClient());
if (Build.VERSION.SDK_INT < 8) {
webview.getSettings().setPluginsEnabled(true);
} else {
webview.getSettings().setPluginState(PluginState.ON);
}
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView wView, String url)
{
progress.setVisibility(View.VISIBLE);
webview.loadUrl(url);
isLoading = true;
return true;
}
@Override
public void onPageStarted (WebView view, String url, android.graphics.Bitmap favicon)
{
progress.setVisibility(View.VISIBLE);
}
@Override
public void onReceivedError (WebView view, int errorCode, String description, String failingUrl)
{
progress.setVisibility(View.GONE);
isLoading = false;
}
@Override
public void onPageFinished (WebView view, String url)
{
progress.setVisibility(View.GONE);
isLoading = false;
}
});
webview.loadUrl(url);
}
答案 0 :(得分:0)
我通过清除/销毁webview解决了这个问题:
if (webview != null)
{
if (isLoading)
{
webview.stopLoading();
}
webview.clearCache(true);
webview.clearView();
webview.freeMemory();
webview.destroy();
}