扩展初始化

运行时在本机端调用扩展初始化函数。使用该扩展的应用程序每次运行时,运行时都会调用一次该初始化函数。尤其是,在扩展首次调用任何上下文的 ExtensionContext.createExtensionContext() 时,运行时都会调用初始化函数。

该函数初始化所有扩展上下文可以使用的数据。使用 FREInitializer() 的签名定义扩展初始值设定项函数。

例如:

void MyExtensionInitializer 
    (void** extDataToSet, FREContextInitializer* ctxInitializerToSet, 
     FREContextFinalizer* ctxFinalizerToSet) 
{ 
    extDataToSet = NULL;  // This example does not use any extension data. 
    *ctxInitializerToSet = &MyContextInitializer; 
    *ctxFinalizerToSet = &MyContextFinalizer; 
}

您定义的 FREInitializer() 方法将以下数据返回到运行时:

  • 一个指针,指向运行时稍后传递给每个新扩展上下文的数据。例如,如果所有扩展上下文都使用同一实用程序库,则该数据可以包含指向该库的指针。该数据称为 扩展数据

    扩展数据可以是您选择的任何数据。它可以是简单的基元数据类型,也可以是指向您定义的结构的指针。在本示例中,指针为 NULL ,因为扩展没有使用此数据。

  • 指向上下文初始化函数的指针。ActionScript 端每次调用 ExtensionContext.createExtensionContext() 时,运行时都调用您提供的扩展上下文初始化函数。请参阅 FREContextInitializer()

  • 指向上下文终结器函数的指针。当运行时释放扩展上下文时,它会调用该函数。当 ActionScript 端调用 ExtensionContext 实例的 dispose() 方法时,发生该调用。如果未调用 dispose() ,运行时将对 ExtensionContext 实例进行垃圾回收。请参阅 FREContextFinalizer()

对于应用程序绑定的扩展,您的 FREInitializer() 实现可以具有任何名称。在扩展描述符文件中指定初始化函数的名称。请参阅 本机扩展描述符文件

对于设备绑定的应用程序,指定扩展初始化函数的方式由设备决定。

以下序列图明确调用 FREInitializer() 函数的 AIR 运行时。它还显示上下文初始化。有关详细信息,请参阅 扩展上下文初始化

查看完全大小图形
扩展初始化序列