Adobe AIR for IOS中的本机扩展代码是否在单独的CPU线程中运行?

时间:2012-08-20 13:18:09

标签: ios air air-native-extension

我正在使用Flex 4.6和AIR 3.3构建IOS应用程序。我确实有一些Objective-C Libs,我们将用它来处理音频,图像和视频,以创建一个新的“视频”文件。

由于我们正在通过本机扩展在设备上进行所有这些处理,我想知道用户是否会看到应用程序锁定直到处理完成。换句话说,我是否需要向他们展示一个进度条,并且不允许他们在应用程序中执行任何其他操作,直到完成或原生扩展代码是否在单独的线程中运行?

第二个问题是......如果Native Code不在单独的线程中运行,是否可以使用新的Actionscript Workers将处理卸载到单独的线程?

1 个答案:

答案 0 :(得分:3)

您的ANE可以调用新线程,因此您的应用不应该锁定。

这是开发原生扩展程序的非常好的参考:http://help.adobe.com/en_US/air/extensions/air_extensions.pdf

引用相关部分: “本机C代码可以将异步事件分派回扩展的ActionScript端。例如,扩展方法可以启动另一个线程来执行某些任务。当另一个线程中的任务完成时,该线程调用FREDispatchStatusEventAsync()来通知扩展的ActionScript端。事件的目标是ActionScript ExtensionContext实例。“

关于工作线程,是的,这正是工作线程的用途,也是我从AS3实现中读到的,它就是这样的。但是,我最好的选择是使用ANE比使用AS3更快。如果你已经准备好推出lib了,我只是使用一个ANE,并且可能尝试一下发布的工作线程以获得乐趣,如果你主要是在AS3中开发的话,可能更容易维护。