AIR Native Extension on Android - Hello World(2) 结构及原理

转载: http://sswilliam.blog.163.com/blog/static/189696383201191095759867/


NativeExtension结构及原理


一个NativeExtension项目主要有两个部分组成:As 端的库项目和底层代码的实现项目。我们以Android 上的NativeExtension为例,对一个NativeExtension项目进行讲解,下图是整个NativeExtension项目的体系结构。




一个NativeExtension项目主要分为两个部分, AS库和本地实现。

Actionscript 库项目

AS库项目部分,开发者会定义需要自己需要扩展ActionscriptAPI,这些API的具体实现会映射到相应的Java代码。

AS库项目部分最核心的类就是ExtensionContextExtensionContext负责与Java代码的交互。ExtensionContext会调用createExtensionContext方法创建和初始化Java端的本地代码。ExtensionContextcall方法可以调用具体的Java代码并获得返回结果。同时Extension还会接受从java代码抛出的事件。

Java项目

Java实现部分需要引入AIRSDK中的FlashRuntimeExtensions.jar进行开发,下文地道的FREExtensionFREContextFREFunctionden类和接口包含在FlashRuntimeExtensions.jar这个jar包中。

FREExtensionjava端自定义代码的入口。FREExtension是一接口,需要用户重写createContext方法从而获得本地代码的上下文。AS库项目部分的ExtensionContextcreateExtensionContext方法就会调用FREExtensiongetContext方法从而获得Java代码的上下文。这个调用由AIR Runtime完成,不需要我们关心。

FREContext是是本地扩展的具体内容的提供者。我们需要重写getFunctions方法,从而返回本地扩展的具体的实现函数。同时FREContext也会提供一些与app相关的API以方便开发,具体请参考官方文档,下图是一些开发中常用的api

 


FREFunction是本地方法的具体实现。FREFunction是一个接口,提供了call方法。在AS端的ExtensionContext中调用的call方法都会映射到具体的FREFunctioncall方法。

FREContextgetFunctions函数会返回一个Map,其key为一个自定义的Stringvalue是具体的FREFunction。通过getFunction方法。AIR Runtime通过getFunctionAS端的call(key,args)方法和java端具体的FREFunctionscall(args)方法进行映射。如下图所示



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值