FREExtension

パッケージ:
com.adobe.fre

ランタイムバージョン
AIR 3

FREExtension インターフェイスには、ネイティブ拡張内の Java コードを AIR ランタイムがインスタンス化するときに使用するインターフェイスが定義されています。

メソッド

メソッド

説明

void initialize()

拡張の初期化処理時にランタイムから呼び出されます。

FREContext createContext( String contextType)

FREContext オブジェクトを作成します。

void dispose()

拡張が破棄されるときにランタイムから呼び出されます。

すべてのネイティブ拡張ライブラリは FREExtension インターフェイスを実装する必要があります。拡張記述ファイルの <initializer> エレメントには、実装するクラスの完全修飾名を指定する必要があります。

例えば、拡張の Java コードが ExampleExtension.jar という JAR ファイルにパッケージされている場合、FREExtension を実装するクラスの名前が com.example.ExampleExtension だとすると、拡張記述ファイルに指定するエントリは次のようになります。

<platform name="Android-ARM"> 
    <applicationDeployment> 
        <nativeLibrary>ExampleExtension.jar</nativeLibrary> 
        <initializer>com.example.ExampleExtension</initializer> 
    </applicationDeployment> 
</platform>

<finalizer> エレメントは、Java 拡張インターフェイスを使用する場合には不要です。

メソッドの詳細

createContext

FREContext createContext( String contextType )

FREContext オブジェクトを作成します。

拡張によって ActionScript ExtensionContext.createExtensionContext() メソッドが呼び出されると、AIR ランタイムによって Java createContext() メソッドが呼び出されます。このメソッドから返されたコンテキストは、以後、ランタイムによるメソッド呼び出しに使用されます。

この関数では、普通、ActionScript 側から呼び出すことができるネイティブ実装内のメソッドセットを指定するために contextType パラメーターを使用します。各コンテキストタイプは様々なメソッドセットに対応します。拡張内では、単一のコンテキストを作成することも、同一の機能セットを備えた複数のコンテキストインスタンスを作成することも、また、異なる機能セットを備えた複数のコンテキストインスタンスを作成することもできます。

パラメーター:

contextType
コンテキストタイプを特定する文字列。拡張で、必要に応じてこの文字列を定義します。コンテキストタイプでは、拡張の ActionScript 側とネイティブ側とで合意した意味を指定できます。コンテキストタイプを使用しない拡張の場合は、この値に Null を設定することもできます。この値は、null の終端文字を含む UTF-8 エンコーディングの文字列です。

戻り値:

FREContext
拡張コンテキストオブジェクト。

例:

次の例は、 contextType パラメーターに応じたコンテキストオブジェクトを返します。 contextType が文字列「TypeA」の場合、この関数は、呼び出されるたびに異なる一意の FREContext インスタンスを返します。 contextType がその他の値の場合は、FREContext インスタンスを 1 つだけ作成し、プライベート変数 bContext に格納します。

    private FREContext bContext; 
    public FREContext createContext( String contextType ) { 
        FREContext theContext = null; 
        if( contextType == "TypeA" ) 
        { 
            theContext = new TypeAContext(); 
        } 
        else 
        { 
            if( bContext == null ) bContext = new TypeBContext(); 
            theContext = bContext; 
        } 
        return theContext; 
    }

dispose

void dispose()

dispose() メソッドは、その FREExtension 実装で作成されたリソースをクリーンアップするために使用します。関連付けられている ActionScript ExtensionContext オブジェクトが破棄されるかガベージコレクションの対象になると、AIR ランタイムによってこのメソッドが呼び出されます。

initialize

void initialize()

拡張の初期化処理時に AIR ランタイムから呼び出されます。

クラスの例

次に示す例は、FREContext オブジェクトを 1 つ作成する単純な FREExtension です。また、この例では、Android Log クラスを使用して情報メッセージを Android システムログに出力する方法がわかります(このログは adb logcat コマンドで参照できます)。

package com.example; 
 
import android.util.Log; 
import com.adobe.fre.FREContext; 
import com.adobe.fre.FREExtension; 
 
public class DataExchangeExtension implements FREExtension { 
 
    private static final String EXT_NAME = "DataExchangeExtension"; 
    private String tag = EXT_NAME + "ExtensionClass"; 
    private DataExchangeContext context; 
 
    public FREContext createContext(String arg0) { 
        Log.i(tag, "Creating context"); 
        if( context == null) context = new DataExchangeContext(); 
        return context; 
    } 
 
    public void dispose() { 
        Log.i(tag, "Disposing extension"); 
        // nothing to dispose for this example 
    } 
 
    public void initialize() { 
        Log.i(tag, "Initialize"); 
        // nothing to initialize for this example 
    } 
}