無効な
FREObject
を Java API 呼び出しで使用すると、Java API から例外がスローされます。
FREObject インスタンスは、コールスタック上の最初の FREFunction 関数が戻るまでの間のみ有効です。コールスタック上の最初の FREFunction 関数は、ActionScript 側で ExtensionContext インスタンスの
call()
メソッドが呼び出された結果として、ランタイムから呼び出された関数です。また、FREObject は、ランタイムによる最初の FREFunction 呼び出しに使用されたスレッド内でのみ有効です。
注意:
FREFunction 関数は間接的に他の FREFunction 関数を呼び出すことができます。例えば、
FREFunctionA()
は ActionScript オブジェクトのメソッドを呼び出すことができます。そのメソッドは次に
FREFunctionB()
を呼び出すことができます。
したがって、FREObject を使用するときは次の点を考慮する必要があります。
-
FREFunction インスタンスに渡された FREObject は、コールスタック上の最初の FREFunction 関数が戻るまでの間のみ有効です。
-
Java 関数で作成された FREObject は、コールスタック上の最初の FREFunction 関数が戻るまでの間のみ有効です。
-
FREObject を他のスレッドで使用することはできません。FREObject は、そのオブジェクトを受け取った、または作成した Java 関数のスレッドと同じスレッド内でのみ使用できます。
-
FREObject への参照をグローバルデータなどに保存しておいて、次回以降の FREFunction 関数呼び出し時に使用することはできません。コールスタック上の最初の FREFunction 関数が戻るとオブジェクトが無効になるので、保存した参照は使用不可になります。ただし、FREContext クラスの
setActionScriptData()
メソッドを使用すると、次回以降の関数呼び出し時までデータを保存しておくことができます。
-
FREObject が無効になった後も、それに対応する ActionScript オブジェクトは存続します。例えば、FREObject が FREFunction 関数の戻り値の場合、対応する ActionScript オブジェクトは参照されたままです。ただし、ActionScript 側でその参照が削除された場合は、ランタイムによって ActionScript オブジェクトが破棄されます。
-
複数の拡張の間で FREObject を共有することはできません。
注意:
1 つの拡張内では、複数の拡張コンテキスト間で FREObject を共有できます。ただし、この場合も他の場合と同じく、コールスタック上の最初の FREFunction 関数がランタイムに処理を戻すと FREObject は無効になります。