我有这个代码,它的工作和唯一的问题是,如果我离开WebView,甚至关闭应用程序,甚至按下手机上的电源,音频从播客继续播放。
有人知道怎么阻止吗?
下面是代码:
public class PodcastsActivity extends BaseActivity //implements ActionBar.OnNavigationListener
{
WebView webview = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
//setTheme(R.style.Theme_Sherlock_Light);
super.onCreate(savedInstanceState);
//setContentView(R.layout.podcasts);
webview = new WebView(this);
webview.getSettings().setAppCacheEnabled(false);
webview.getSettings().setJavaScriptEnabled(true);
webview.setInitialScale(1);
webview.getSettings().setPluginState(PluginState.ON);
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
//webSettings.setBuiltInZoomControls(true);
WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
//webSettings.getMediaPlaybackRequiresUserGesture();
webSettings.setAllowContentAccess(true);
webSettings.setEnableSmoothTransition(true);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setSupportZoom(true);
webSettings.setUseWideViewPort(true);
setContentView(webview);
webview.loadUrl("http://www.stitcher.com/podcast/entrepreneuronfirecom/entrepreneur-on-fire-tim-ferriss-other-incredible-entrepreneurs");
}
// public void onBackPressed ( )
// {
// Class.forName("com.***.HTML5WebView").getMethod("onPause", (Class[]) null).
// invoke(html5WebView, (Object[]) null);
// }
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack())
{
webview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onStop()
{
super.onStop();
// your code
webview.clearView();
}
4条答案
按热度按时间5ssjco0h1#
您应该分别从Activity的
onPause()
和onResume()
调用WebView的onPause()
和onResume()
。暂停与此WebView及其关联DOM、插件、JavaScript等关联的任何额外处理。例如,如果此WebView被移出屏幕,则可以调用此函数以减少不必要的CPU或网络流量。当此WebView再次处于“活动”状态时,调用onResume()。
还有
pauseTimers()
,它会影响应用程序中的所有WebView:暂停所有WebView的所有布局、解析和JavaScript计时器。这是一个全局请求,不仅限于此WebView。如果应用程序已暂停,这可能很有用。
blmhpbnm2#
接受的答案对我不起作用-只是在片段中使用
onPause
不足以停止Android 9上的音乐。我还必须这样做:nxagd54h3#
Jetpack Compose的相同问题可以通过在
onCreated
中捕获WebView(https://google.github.io/accompanist/webview/)然后使用它来调用destroy()
来解决。ttcibm8c4#
在我的情况下,WebView
onPause()
和onResume()
不适合我。**解决方案:**onPause我加载下面的URL来停止音频: