我有一个带音频播放器的网络浏览器。如果我启动音频并按back返回到上一个活动,音频仍然在后台播放。只有当API低于11时才会出现此问题。
我的代码:
@Override
public void finish() {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
webView.onPause();
} else {
webView.loadUrl("about:blank");
}
}我也试过了
webView.loadData("", "text/html", "utf-8");和
webView.clearCache(true);
webView.clearHistory();
webView.destroy();但它并没有起作用。
有人知道怎么解决这个问题吗?
发布于 2016-08-12 23:32:48
一个对我有效的简单技巧是
webView.loadUrl("javascript:document.location=document.location");发布于 2015-07-24 15:22:11
这解决了API > 11的问题
@Override
public void onPause() {
super.onPause();
if(webView != null) {
webView.onPause();
}
}
@Override
public void onResume() {
super.onResume();
if (webView != null) {
webView.onResume();
}
}但对于较低版本(在您的示例中),您需要按如下方式调用onPause和onResume
@Override
public void onPause() {
super.onPause();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
webview.onPause();
} else {
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) {
...
}
}
}
@Override
public void onResume() {
super.onPause();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
webview.onResume();
} else {
try {
Class.forName("android.webkit.WebView")
.getMethod("onResume", (Class[]) null)
.invoke(webview, (Object[]) null);
} catch(ClassNotFoundException cnfe) {
...
} catch(NoSuchMethodException nsme) {
...
} catch(InvocationTargetException ite) {
...
} catch (IllegalAccessException iae) {
...
}
}
}https://stackoverflow.com/questions/31597352
复制相似问题