如何停止在我的网页浏览中播放的YouTube视频?当我点击后退按钮时,视频不会停止,而是在后台继续播放.
码:
webView = (WebView) findViewById(R.id.webview); webView.getSettings().setPluginsEnabled(true); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setBuiltInZoomControls(false); webView.getSettings().setSupportZoom(false); webView.loadData(myUrl,"text/html", "utf-8");
Andrew Thomp.. 88
请参阅以下帖子,了解WebView线程永不停止
基本上你需要从你自己的Activity的onPause方法调用WebView的onPause方法.
唯一的技巧是你不能直接调用WebView的onPause方法,因为它是隐藏的.因此,您需要通过反射间接调用它.以下代码可以帮助您开始设置自己的Activity的onPause方法:
@Override public void onPause() { super.onPause(); try { Class.forName("android.webkit.WebView") .getMethod("onPause", (Class[]) null) .invoke(webview, (Object[]) null); } catch(ClassNotFoundException cnfe) { ... } catch(NoSuchMethodException nsme) { ... } catch(InvocationTargetException ite) { ... } catch (IllegalAccessException iae) { ... } }
请注意,上面try块中的变量"webview"是类的私有实例变量,并在Activity的onCreate方法中赋值.
请参阅以下帖子,了解WebView线程永不停止
基本上你需要从你自己的Activity的onPause方法调用WebView的onPause方法.
唯一的技巧是你不能直接调用WebView的onPause方法,因为它是隐藏的.因此,您需要通过反射间接调用它.以下代码可以帮助您开始设置自己的Activity的onPause方法:
@Override public void onPause() { super.onPause(); try { Class.forName("android.webkit.WebView") .getMethod("onPause", (Class[]) null) .invoke(webview, (Object[]) null); } catch(ClassNotFoundException cnfe) { ... } catch(NoSuchMethodException nsme) { ... } catch(InvocationTargetException ite) { ... } catch (IllegalAccessException iae) { ... } }
请注意,上面try块中的变量"webview"是类的私有实例变量,并在Activity的onCreate方法中赋值.
解决方案:1 -
花了很多时间后,我得出结论暂停正在播放HTML的WebView 概念的视频.
只需覆盖onPause()
您使用的Activity或Fragment上的方法WebView
,然后调用它.这个对我有用.
@Override public void onPause() { super.onPause(); mWebView.onPause(); } @Override public void onResume() { super.onResume(); mWebView.onResume(); }
解决方案:2 - 如果上述解决方案对您不起作用,则可以强制WebView加载不存在的html文件.
mWebview.loadUrl("file:///android_asset/nonexistent.html");
你还必须实现onResume()方法或第二次它不起作用
@Override public void onResume() { super.onResume(); webView.onResume(); } @Override public void onPause() { super.onPause(); webView.onPause(); }
上面的解决方案在三星Galaxy S和Android 2.3.3上失败了.但我尝试以下解决方法取得了成功:
webview.loadUrl("file:///android_asset/nonexistent.html");
我强迫webview加载一个不存在的html文件.这似乎迫使webview清理.
试试这个:
@Override public void onPause() { super.onPause(); myWebView.onPause(); myWebView.pauseTimers(); } @Override public void onResume() { super.onResume(); myWebView.resumeTimers(); myWebView.onResume(); } @Override protected void onDestroy() { myWebView.destroy(); myWebView = null; super.onDestroy(); }
这是我个人的最爱:
@Override protected void onPause() { super.onPause(); if (isFinishing()) { webView.loadUrl("about:blank"); } else { webView.onPause(); webView.pauseTimers(); } } @Override protected void onResume() { super.onResume(); webView.resumeTimers(); webView.onResume(); }
如果仅暂停视图,它将暂停Web视图,但是在活动结束时将其清除。
这至少需要Android 3.0-API 11(蜂窝)