首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webview中的音频将继续在后台播放

webview中的音频将继续在后台播放
EN

Stack Overflow用户
提问于 2015-07-24 04:23:49
回答 2查看 1.8K关注 0票数 1

我有一个带音频播放器的网络浏览器。如果我启动音频并按back返回到上一个活动,音频仍然在后台播放。只有当API低于11时才会出现此问题。

我的代码:

代码语言:javascript
复制
@Override
public void finish() {
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
           webView.onPause();
        } else {
            webView.loadUrl("about:blank");
        }
}

我也试过了

代码语言:javascript
复制
webView.loadData("", "text/html", "utf-8");

代码语言:javascript
复制
webView.clearCache(true);
webView.clearHistory();
webView.destroy();

但它并没有起作用。

有人知道怎么解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2016-08-12 23:32:48

一个对我有效的简单技巧是

代码语言:javascript
复制
webView.loadUrl("javascript:document.location=document.location");
票数 1
EN

Stack Overflow用户

发布于 2015-07-24 15:22:11

这解决了API > 11的问题

代码语言:javascript
复制
@Override
public void onPause() {
    super.onPause();
    if(webView != null) {
        webView.onPause();
    }
}
@Override
public void onResume() {
    super.onResume();

    if (webView != null) {
        webView.onResume();
    }
}

但对于较低版本(在您的示例中),您需要按如下方式调用onPauseonResume

代码语言:javascript
复制
    @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) {
        ...
    }
    }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31597352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档