Android の Flash ベースのビデオ プレーヤーが、数時間再生すると必ずクラッシュするのはなぜですか?
私はフラッシュベースの Android アプリを書いています。ネイティブ Android パーツが webview を使用してフラッシュ SWF をロードする唯一のこと。swf は、すべてのモジュール (すべてフラッシュ as3 で記述) のコンテナーとして機能しました。モジュールの 1 つは、一連のビデオ プレイリストを永久にループ再生する単純なビデオ モジュールです。
私はメモリ リークを考えましたが、(フラッシュの System.totalMemory を使用して) メモリ使用量を出力した後、結果は常に約 12MB から 14MB です (2 つのビデオでは通常のようです)。webview と他のサードパーティの Android 用 SWF プレーヤー (「Swf Player」や「Smart SWF Player」など) の両方を使用してフラッシュをテストしましたが、すべて数時間後にクラッシュします。
as3 コードはシンプルで、考えられる原因がわかりません。これが私のメインクラスです:
import flash.display.MovieClip;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
public class simpleVid extends MovieClip {
private var video:Video;
private var nc:NetConnection;
private var ns:NetStream;
private var uri:Array = new Array("vid1.flv", "vid2.flv");
private var counter:int = 0;
public function simpleVid() {
// constructor code
nc = new NetConnection();
nc.connect(null);
ns = new NetStream(nc);
video = new Video();
video.attachNetStream(ns);
ns.client = {onMetaData:videoReady, NetStatusEvent:onStatusEvent};
ns.addEventListener(NetStatusEvent.NET_STATUS, onStatusEvent);
ns.play(uri[counter]);
stage.addChild(video);
counter++;
counter = counter % 2;
}
public function videoReady(item:Object){
video.width = 1280;
video.height = 720;
}
public function onStatusEvent(event:NetStatusEvent):void{
if (event.info.code == "NetStream.Play.Stop") {
ns.play(uri[counter]);
counter++;
counter = counter % 2;
}
}
}
このコードで見逃したことや間違ったことはありますか?
前もって感謝します。