<span style="font-family: Arial, Helvetica, sans-serif;">  笔者最近使用Eclipse开发Android移动应用app,其实有一个功能是使用Android系统自带的WebView控件加载Web页面。开发很顺利,浏览也很正常。不过有个比较特殊的一点就是加载的Web页面中有声音或者视频。在包括WebView的Activity被Finish之后。声音或者视频仍然在后台播放,声音也不停止。再一次打开Activity之后,会重复的播放声音或者视频。</span>

  此问题绝对是不能够容忍的,于是上网搜索,这一搜索不要紧,原来遇到此问题的网友还不止笔者一人。查了一番之后发现,原来此问题应该归属于Android的bug,不太好修改。对于包含视频的网页,可以下面的方法解决:

protected void onPause() {    super.onPause();    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {         webView.onPause(); // 暂停网页中正在播放的视频    }}

但是此代码对于声音是无能为力。在网上搜索了很长时间,解决办法也很多,如:

web.pauseTimers();  web.stopLoading();  web.loadData("<a></a>", "text/html", "utf-8");

Intent i = new Intent("com.android.music.musicservicecommand"); i.putExtra("command", "pause"); mContext.sendBroadcast(i);

web.loadData("about:blank");

以上方法,经过笔者测试,均不好用。


  后来经过多次测试,发现一个规律,就是在finish之前,Activity被重新载的页面地址是啥,下次打开之后,还显示什么页面(因为笔者使用:web.loadData("about:blank");方法测试时,发现下次打开时,显示的是空白页面,开始以为是页面没有加载成功,后来无意中灵机一动,会不会是关闭之前加载的页面,下次打开时还是加载哪个呢?)。后来测试了一下,关闭之前加载了一下百度页面,发现下次打开时,还真是显示的百度百度页面。那就将错就错,直接重新加载当前页面地址,不就ok了吗。一试,还真可以。声音或者视频停止了,下次打开,页面也能够正常加载了。真是得来全不废功夫。

解决办法如下:

    @Override    protected void onPause ()    {        m_WebView.reload ();        super.onPause ();    }


m_WebView为Activity中的WebView控件。

更多相关文章

  1. android开发 加载so库的解析和出现的各种错误分析
  2. Android(安卓)如何保证App切换到后台,或页面跳转后,重新打开APP、
  3. android 页面布局时定义控件ID时@id/XX和@+id/xx 有什么区别?
  4. 在Android中调用动态库文件(*.so)
  5. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实
  6. android基于dialog加载时转圈圈的demo
  7. 一次偶然机遇找到一个不错的关于Android实现加载gif动画的实例,写
  8. Android热修复(一):底层替换、类加载原理总结 及 DexClassLoader类
  9. Android(安卓)高仿新浪微博底部导航栏,实现双击首页Tab,页面的List

随机推荐

  1. android 生成二维码
  2. android如何使用menu键
  3. Android(安卓)TextView限定行数最大值,点
  4. android的ndk修改app_platform的方法,亲测
  5. Android.API.Context.getFilesDir()
  6. Android库项目的导出及其引用资源
  7. android 屏幕方向控制
  8. Android(安卓)studio安装Genymotion插件
  9. Android(安卓)7.1使用以太网口共享本机4G
  10. android设置字符串到剪贴板