android中解决关闭的webView时候音视频还在播放问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中解决关闭的webView时候音视频还在播放问题相关的知识,希望对你有一定的参考价值。
参考技术A
最好的解决方案:
通过在不同生命周期处理
public void onResume()
super.onResume();
mWebView.resumeTimers();
mWebView.onResume();
@Override
public void onPause()
super.onPause();
mWebView.onPause();
@Override
@Override
protected void onDestroy()
mWebView.destroy();
mWebView = null;
super.onDestroy();
Android Webview 后台播放音视频实现
问题
- 我们使用WebView播放音乐或视频(比如油管视频)
- 前台播放一直很正常,但是比较费电
- 进入后台后就会暂停播放
- 所以需求就是我们想要App在后台时同样播放音视频
解决方法
- 重写onWindowVisibilityChanged方法,让网页任然感觉像是在前台执行。
关键代码
1
2
3
4
5
6
| override fun onWindowVisibilityChanged(visibility: Int)
super.onWindowVisibilityChanged(View.VISIBLE)
Log.i("BackgroundMediaWebView", "onWindowVisibilityChanged " +
"visibility=$toReadableVisibility(visibility)")
|
- 当App 进入后台(按Home键),visibility会变成Gone
- 我们强制调用
super.onWindowVisibilityChanged(View.VISIBLE)
会保持WebView继续播放音视频
完整代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| package com.example.webviewvisibilitychangedsample
import android.content.Context
import android.util.AttributeSet
import android.util.Log
import android.view.View
import android.webkit.WebView
class BackgroundMediaWebView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : WebView(context, attrs, defStyleAttr)
override fun onWindowVisibilityChanged(visibility: Int)
super.onWindowVisibilityChanged(View.VISIBLE)
Log.i("BackgroundMediaWebView", "onWindowVisibilityChanged " +
"visibility=$toReadableVisibility(visibility)")
private fun toReadableVisibility(visibility: Int): String
return when(visibility)
View.VISIBLE -> "Visible"
View.INVISIBLE -> "Invisible"
View.GONE -> "Gone"
else -> "Unknown"
|
完整示例项目
以上是关于android中解决关闭的webView时候音视频还在播放问题的主要内容,如果未能解决你的问题,请参考以下文章
android解决webview,页面关闭之后,视频或者音频还在播放的问题
android WebView音频关闭的问题
关闭全屏视图后的Android WebView Video,webview自动滚动
如何解决在android开发中WebView在线播放视频黑屏啊?
如何在android webview中获取完成youtube视频的事件
android 4.0 webview 无法播放视频