Как остановить Flash после выхода из WebView?
У меня есть приложение, которое я собрал для потокового флэш-видео в веб-браузере, когда пользователь нажимает кнопку.
Он делает это хорошо, но после поддержки или потери фокуса, похоже, что он продолжает использовать данные некоторое время, пока я не предполагаю, что система отключает активность. Если я вручную отключу экран активности, использование данных прекратится почти сразу. Просто отступать, и это может продолжаться некоторое время.
Может кто-то помочь мне с моим кодом, я бы очень признателен!
import java.lang.reflect.Method;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class Video extends Activity {
private WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
webview = (WebView) findViewById(R.id.webview);
// resumeTimers() to account for the webview refcount bug (hopefully)
webview.resumeTimers();
WebSettings webSettings = webview.getSettings();
webview.getSettings().setJavaScriptEnabled(true);
webSettings.setPluginsEnabled(true);
webview.setVerticalScrollBarEnabled (false);
webview.setHorizontalScrollBarEnabled (false);
webview.loadUrl("http://www.nasa.gov/multimedia/nasatv/nasatv_android_flash.html");
}
@Override
protected void onPause() {
pauseBrowser();
super.onPause();
}
@Override
protected void onResume() {
resumeBrowser();
super.onResume();
}
private void pauseBrowser() {
// pause flash and javascript etc
callHiddenWebViewMethod(webview, "onPause");
webview.pauseTimers();
}
private void resumeBrowser() {
// resume flash and javascript etc
callHiddenWebViewMethod(webview, "onResume");
webview.resumeTimers();
}
private void callHiddenWebViewMethod(final WebView wv, final String name){
if( webview != null ){
try {
Method method = WebView.class.getMethod(name);
method.invoke(webview);
} catch (final Exception e) {
}
}
}
}
Ответы
Ответ 1
Я немного смущен вопросом, но, думаю, вы говорите, что флеш-видео продолжает играть даже после закрытия активности. Я столкнулся с подобной проблемой. Для меня работали следующие:
@Override
protected void onDestroy() {
super.onDestroy();
final WebView webview = (WebView)findViewById(R.id.webPlayer);
// Calling .clearView does not stop the flash player must load new data
webview.loadData("", "text/html", "utf-8");
}
Я разместил здесь одно и то же решение: android WebView остановить Flash-плагин onPause
Ответ 2
Этот подход работает. Я нажимаю его на кнопку "Назад".
webview.stopLoading();
webview.loadUrl("");
webview.reload();
webview = null;
Ответ 3
Вызов webvew.destroy()
в onDestroy()
работал у меня.
Ответ 4
Подход, основанный на использовании webViwe, не сработал у меня - он работал хорошо при первом закрытии веб-браузера, но последующие вызовы веб-браузера вызвали сбой.
Я закончил это:
_webView.loadData( "," text/html "," utf-8");
из метода my activity finish().
Ответ 5
Если вам так повезло, как и я, даже этого будет недостаточно, чтобы закончить потоковое воспроизведение youtube! Звук все равно играет независимо от того, что!
@Override
protected void onDestroy() {
super.onDestroy();
// Stopping a webview and all of the background processes (flash,
// javascript, etc) is a very big mess.
// The following steps are to counter most of the issues seen on
// internals still going on after the webview is destroyed.
mWebView.stopLoading();
mWebView.loadData("", "text/html", "utf-8");
mWebView.reload();
mWebView.setWebChromeClient(null);
mWebView.setWebViewClient(null);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.webviewRelativeLayout);
layout.removeView(mWebView);
mWebView.removeAllViews();
mWebView.clearHistory();
mWebView.destroy();
mWebView = null;
}
Ответ 6
Я объединил некоторые ответы здесь, и это сработало для меня:
@Override
protected void onDestroy()
{
super.onDestroy();
webView.stopLoading();
webView.loadData("", "text/html", "utf-8");
webView.destroy();
}