【FFH】JSFA调用PA(三) Ability调用方式 原创 精华
JS FA调用Java PA(三)Ability调用方式
引言
【FFH】JSFA调用PA(一)Ability概念及Ability与Internal Ability
【FFH】JSFA调用PA(二) Internal Ability调用方式
上两篇文章我们已经了解到了Ability的概念,还有JS FA调用Java PA两种方式,Ability和Internal Ability的区别,还有第二篇文章对InternalAbility调用方式的讲解。
接下来我们借助官方文档的案例来解读一下 Ability 调用方式
的具体实现方法。
在此之前,我们先来看一下一些相关概念。
相关概念
RPC( Remote Procedure Call)
Ability方式中,与FA通过RPC方式
通信,先来了解一下什么是RPC,RPC 是 Remote Procedure Call ,翻译过来就是远程过程调用
,说白了就是一个机器远程调用并执行另一个机器上的函数。
所以他是个比较宽泛的概念,其中我们经常用到的HTTP协议就属于常见的一种RPC实现方式。
在HarmonyOS有很多地方都用到了RPC方式通信,比如跨设备调用,远程拉起FA,FA的迁移流转等等。
Intent
了解完什么是RPC,那么RPC具体是通过什么让发送方和接收机方知道要干什么的呢?其实就是接下来我们要说的对象之间传递信息的载体—Intent
。
开发者的PA首次被FA连接时回调,并返回IRemoteObject对象,用于后续的业务通信。开发者需要继承Ability类并重写onConnect(Intent: intent)
方法,其中该方法的参数就是Intent
,所以他到底是拿来干嘛的呢?
在HarmonyOS中提供了Intent机制来协助Ability之间的通信
,例如,当一个Ability需要启动另一个Ability时,或者一个AbilitySlice需要导航到另一个AbilitySlice时。
Intent是一个将要执行的动作的抽象的描述
,在HarmonyOS中由以下元素构成:
用大白话讲,Intent就是作为Ability之间交流的粘合剂,接收方Ability可以从Intent获得到发送方发送了什么请求。
JS FA调用Java PA — Ability调用方式
接下来进入正题。
JS FA端
这部分我们就不细说,因为和InternalAbility的实现方法差不多,只是action.abilityType
值不一样,要具体了解就看看上一篇文章吧。
PA端(Ability方式)
这里我们还是以官方文档的案例为参考,我们对官方案例进行一个步骤分解,以方便理解
1.导入相关ohos接口包
2.创建一个继承Ability的类并且重写onConnect方法
创建完这个类之后,先重写onConnect(Intent: intent)
方法,并且在onConnect返回一个remote对象
,供FA向PA发送消息。
3.继承RemoteObject类重写方法完成业务逻辑
完整示例代码请查看官方文档
【FFH】JSFA调用PA(一)Ability概念及Ability与Internal Ability
【FFH】JSFA调用PA(二) Internal Ability调用方式