拡張の初期化

ランタイムは、ネイティブ側の拡張初期化関数を呼び出します。拡張を使用するアプリケーションが実行されるたびに 1 回だけ初期化関数を呼び出します。具体的には、任意のコンテキストで拡張が ExtensionContext.createExtensionContext() を最初に呼び出したときに、ランタイムは初期化関数を呼び出します。

初期化関数は、すべての拡張コンテキストが使用できるデータを初期化します。拡張の initializer 関数は、 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() の実装は任意の名前に設定できます。拡張記述ファイル内に初期化関数の名前を指定します。 ネイティブ拡張記述ファイル を参照してください。

デバイスバンドルアプリケーションでは、拡張の initializer 関数の指定方法はデバイスによって異なります。

次のシーケンス図に、AIR ランタイムが FREInitializer() 関数を呼び出す様子を示します。また、コンテキストの初期化についても示します。詳しくは、 拡張コンテキストの初期化 を参照してください。

フルサイズのグラフィックを表示
拡張の初期化シーケンス