我制作了一个android应用程序,它有一个webview,可以从assets文件夹加载flash游戏。一切正常,除了当我离开游戏时,声音还在继续。我试着按下后退键来完成这个活动,但是还是一样。
package com.example.flashgame;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.webkit.WebView;
public class MainActivity extends Activity {
WebView mWebView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setBackgroundColor(Color.parseColor("#000000"));
mWebView.loadUrl("file:///android_asset/game.swf");
}
}
问题是,虽然你可能已经调用了finish()
,垃圾收集器并不一定收集你的活动直接,这将导致在你创建的对象(如任何MediaPlayer
对象或类似)挂了一段时间-其中包括你的WebView
。
问题通常是,人们需要调用stop()
或类似的flash游戏/音频对象之前,你调用'finish()',这将导致他们实际上停止,而不是挂在系统等待他们被垃圾收集。在你的情况下,你可能需要加载一个null
url到你的webview或类似的停止flash游戏运行