什么家庭。所以这不是问关于内存管理方案的问题;对于那些你可能不知道的人来说,Flash虚拟机通过引用计数和标记和扫描依赖于垃圾收集(为了更好地理解这些主题,请查看Grant Skinner的article和presentation)。是的,Flash还提供了“删除”操作符,可以(不幸的是)只用于删除动态对象的属性。如何让Flash与其他人一起玩?
我想知道的是如何使Flash程序在后台运行时不会继续占用CPU和内存(例如,保存加载内容或远程通信)。这个问题的动机部分来自苹果禁止交叉编译的应用程序(在其SDK 4中),理由是它们不具备iPhone OS 4的核心功能behave as predicted with the multitasking。我的目的不仅仅是让Flash程序能够通过测试'就iPhone OS 4中的多任务而言,还可以简单地制作更好(行为上)的Flash程序。换句话说,Flash应用程序如何模仿iPhone OS 4的多任务功能? Flash API是否为开发人员提供了在其他程序运行时将其应用程序“休眠”的方法,然后以同样的速度“唤醒”它们?
在我们自己的程序中,我们可能会做一些粗的检测,当用户处于空闲状态(比方说)四个秒(无鼠标移动或按键):
var idle_id:uint = setInterval(4000, pause_program);
var current_movie_clip:MovieClip;
var current_frame:uint;
...
// on Mouse move or key press...
clearInterval(idle_id);
idle_id = setInterval(4000, pause_program);
...
function pause_program():void
{
current_movie_clip = event.target as MovieClip;
current_frame = current_movie_clip.currentFrame;
MovieClip(root).gotoAndStop("program_pause_screen");
}
(上节目暂停屏幕)
resume_button.addEventListener(MouseEvent.CLICK, resume_program);
function resume_program(event:MouseEvent)
{
current_movie_clip.gotoAndPlay(current_frame);
}
如果这是正确的想法,什么是检测一个应用程序应该被搁置的最佳方式?
而且,更重要的是,Flash Player是否有可能检测到其某些正在运行的程序处于空闲状态,并且类似地搁置它们,直到用户执行恢复它们的操作为止?
(请随时回答尽可能多或尽可能少的我已经提出了许多问题。)