可见性更改后 Webview 无法加载视频
Webview unable to load video after visibility change
我遇到了一个奇怪的问题。
只要我正在使用的 webview 没有显示在屏幕上,它就会在下次显示在屏幕上时加载新的 URL 出现问题。
我测试了什么 -
如果没有可见性变化,当我调用 loadUrl 方法时,webview 可以一个接一个地加载许多 url。
如果它在任何时候被隐藏,要么是因为我将它的可见性设置为 GONE,要么是另一个视图出现在它上面,那么它在恢复可见后不会加载。
一件有趣的事,URL 正在加载(它有一个播放视频的嵌入代码),因为我可以听到新视频的声音,但视觉效果卡在显示最后一个 URL 已加载。
我是不是漏掉了什么明显的东西?
仍然无法弄清楚为什么会这样。每次我需要它时都会膨胀一个新的 Webview 实例(并销毁旧实例)。这不是一个非常频繁的操作(需要在很宽的频率范围内出现,从 5 秒一次到 2 小时一次)因此性能问题可以忽略。
不是解决方案,但对我有用。
我不确定您想如何使用可见性,但我认为您可以在执行以下代码后解决您的问题:
webView = findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.loadUrl("https://www.w3schools.com/tags/movie.mp4");//video url
//checking the webview functionality after hiding and showing webview
webView.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
注意:不要忘记在应用的 manifest.xaml
中添加互联网权限
<uses-permission android:name="android.permission.INTERNET"/>
我遇到了一个奇怪的问题。
只要我正在使用的 webview 没有显示在屏幕上,它就会在下次显示在屏幕上时加载新的 URL 出现问题。
我测试了什么 -
如果没有可见性变化,当我调用 loadUrl 方法时,webview 可以一个接一个地加载许多 url。
如果它在任何时候被隐藏,要么是因为我将它的可见性设置为 GONE,要么是另一个视图出现在它上面,那么它在恢复可见后不会加载。
一件有趣的事,URL 正在加载(它有一个播放视频的嵌入代码),因为我可以听到新视频的声音,但视觉效果卡在显示最后一个 URL 已加载。
我是不是漏掉了什么明显的东西?
仍然无法弄清楚为什么会这样。每次我需要它时都会膨胀一个新的 Webview 实例(并销毁旧实例)。这不是一个非常频繁的操作(需要在很宽的频率范围内出现,从 5 秒一次到 2 小时一次)因此性能问题可以忽略。
不是解决方案,但对我有用。
我不确定您想如何使用可见性,但我认为您可以在执行以下代码后解决您的问题:
webView = findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.loadUrl("https://www.w3schools.com/tags/movie.mp4");//video url
//checking the webview functionality after hiding and showing webview
webView.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
注意:不要忘记在应用的 manifest.xaml
中添加互联网权限<uses-permission android:name="android.permission.INTERNET"/>