0

为什么我在 Android 上的基于 Flash 的视频播放器在播放几个小时后总是崩溃?

我正在编写一个基于 Flash 的 Android 应用程序。本机 android 部分使用 webview 加载 Flash swf 的唯一操作。swf 充当所有模块的容器(所有模块都写在 flash as3 中)。其中一个模块是一个简单的视频模块,它永远循环播放一组视频播放列表。

我考虑过内存泄漏,但在打印内存使用情况后(使用闪存的 System.totalMemory),结果总是在 12MB 到 14MB 左右(这对于两个视频来说似乎很正常)。我已经使用 webview 和其他第三方 swf 播放器(例如“Swf Player”和“Smart SWF Player”)测试了 flash,几个小时后都导致崩溃。

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;
        }
    }
}

这段代码有什么我遗漏或做错了吗?

提前致谢。

4

1 回答 1

0

在我切换到 AIR 而不是 flash 后,这个问题“神秘地”消失了。没有更改代码,我只是将发布设置从 Flash player 更改为 air for android。现在它可以连续运行几天没有问题。

于 2013-07-22T03:06:29.780 回答