我发现了一个问题,即应用程序在显示 android 弹出窗口后显示黑屏,例如“系统更新”或“选择邮件应用程序”,这是由相机对象引起的。
将摄像头附加到视频并打开一个弹出窗口后(以后的任何时间):
包括伪代码
video = new Video(width, height); //flash.media.Video
video.attachCamera(camera); //flash.media.Camera
videoContainer.addChild(video);
...
<s:Button label="send mail" click="{clear() and navigateToURL('mailTo:...');}"/> //will cause to open the "Select a mail app"-popup
function clear()
{
video.attachCamera(null);
video.clear();
removeChild(video);
video = null;
camera = null;
}
当显示黑屏时,flex 应用程序仍然处于活动状态,并且其他按钮是可点击的(如果您找到它们)。似乎它只是不会再次渲染 flex 应用程序,但如果之前未连接相机,则不会发生此问题。此外,导航器视图堆栈的哪个视图处于活动状态也无关紧要。如果一旦安装了相机,黑屏将在弹出窗口打开后的任何时间显示在任何视图上。
所以我想知道是否有办法强制应用程序再次呈现当前视图,或者是否有其他方法可以从内存中清除/删除/擦除相机对象。
@编辑
我的视频对象被添加到 SpriteVisualElement
<s:SpriteVisualElement id="videoContainer"/>
@编辑
经过进一步调查,renderMode auto、gpu、cpu、direct 似乎也会影响行为。有时黑屏在短时间内可见,然后视图再次呈现,在另一种模式下,它会在短时间内显示视图,然后是黑屏,...在我上面描述的情况下,它设置为“gpu”。