FREExtension

包:
com.adobe.fre

运行时版本
AIR 3

FREExtension 接口定义由 AIR 运行时使用的接口,以实例化本机扩展中的 Java 代码。

方法

方法

说明

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>

在使用 Java 扩展接口时,不需要 <finalizer> 元素。

方法详细信息

createContext

FREContext createContext( String contextType )

创建 FREContext 对象。

当扩展调用 ActionScript ExtensionContext.createExtensionContext() 方法后,AIR 运行时调用 Java createContext() 方法。运行时使用返回的上下文进行后续方法调用。

此函数通常使用 contextType 参数来选择本机实现中 ActionScript 端可以调用的方法集。每个上下文类型都对应一个不同的方法集。您的扩展可以创建单个上下文、提供相同功能集的多个上下文实例(但具有特定于实例的状态)或者提供不同功能的多个上下文实例。

参数:

contextType
标识上下文类型的字符串。可根据扩展的需要定义此字符串。上下文类型可表示扩展的 ActionScript 端与本机端之间的任何约定含义。如果您的扩展不使用上下文类型,则此值可以是 Null 。此值为 UTF-8 编码的字符串,以 null 字符终止。

返回:

FREContext
扩展上下文对象。

示例:

以下示例返回基于 contextType 参数的上下文对象。如果 contextType 为字符串“TypeA”,则函数在每次调用时返回一个唯一的 FREContext 实例。对于 contextType 的其他值,该函数仅创建一个 FREContext 实例,并将其存储在私有变量 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 对象的简单 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 
    } 
}