鸿蒙服务卡片

server/2025/1/3 3:14:18/

卡片特点:

  1. 卡片可以承载少量的内容显示和交互

  2. 卡片可以充当元服务的入口,点击卡片可以唤起元服务

服务卡片-应用双向通信

 卡片 => 应用

使用postCardAction方法

@Entry
@Component
struct MainPic {@Statenum: number = 0build() {Column({ space: 10 }) {Row({ space: 10 }) {Button("-").onClick(() => {this.num && this.num--})Text(this.num.toString()).fontSize(20)Button("+").onClick(() => {this.num++})}.width('100%').justifyContent(FlexAlign.Center)}.width('100%').height("100%").justifyContent(FlexAlign.Center)}
}

点击卡片唤起应用

.onClick(() => {postCardAction(this, {action: 'router',abilityName: 'EntryAbility',})})

加1减1传递当前的数字

@Entry
@Component
struct Count {@Statenum: number = 0build() {Row({ space: 10 }) {Button("-").onClick(() => {if(this.num)this.num--postCardAction(this, {action: 'call',abilityName: 'EntryAbility', // 只能跳转到当前应用下的UIAbilityparams: {// 使用call方式 需要第二个参数method: 'updateNum', // 名字必须叫method method的值是在ability中监听的方法名num: this.num}})})Text(this.num.toString()).fontSize(20)Button("+").onClick(() => {this.num++postCardAction(this, {action: 'call',abilityName: 'EntryAbility', // 只能跳转到当前应用下的UIAbilityparams: {method: 'updateNum', // 名字必须叫method method的值是在ability中监听的方法名num: this.num}})})}.width("100%").height("100%").justifyContent(FlexAlign.Center).alignItems(VerticalAlign.Center).onClick(() => {postCardAction(this, {action: 'router',abilityName: 'EntryAbility'})})}
}

请注意,如果使用call方式传递调用,需要开启一个后台权限-保持应用在后台

 "requestPermissions": [{"name": "ohos.permission.KEEP_BACKGROUND_RUNNING"}],

在ability的onCreate采用callee接收调用方法

callee方法的第一个参数为调用方法名,第二个参数必须返回一个实现rpc.Parcelable的实现类对象

定义一个Params的参数对象

import rpc from '@ohos.rpc';
class Params implements rpc.Parcelable {marshalling(messageSequence: rpc.MessageSequence): boolean {return true;}unmarshalling(messageSequence: rpc.MessageSequence): boolean {return true;}
}

在ability中监听callee调用的方法

// 声明一个接收参数的对象
class CardParams {num: number = 0
}
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');this.callee.on("updateNum", (data) => {const res = JSON.parse(data.readString()) as CardParamsAppStorage.setOrCreate("num", res.num)return new Params()})}


http://www.ppmy.cn/server/154711.html

相关文章

tcpdump 网络数据包分析工具

简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的…

Tomcat:开源Web服务器的中流砥柱

在当今的Web开发领域,Tomcat作为Apache软件基金会旗下的一个开源项目,一直以其稳定、高效和灵活的特点,赢得了广大开发者的青睐。作为Java Servlet、JavaServer Pages、Java Expression Language和Java WebSocket技术的标准实现,T…

vim/vi编辑器

撤销和恢复更改: 撤销更改 u 按下 u 键可以撤销最近的更改。如果多次按下 u,会逐步撤销之前的更改。 :undo 这是撤销的命令模式形式,与按下 u 功能相同。 恢复撤销 Ctrl-r 按下 Ctrl-r 可以恢复上一次被撤销的更改。 :redo 这是恢复的命令模…

Java编程题_面向对象和常用API01_B级

Java编程题_面向对象和常用API01_B级 第1题 面向对象、异常、集合、IO 题干: 请编写程序,完成键盘录入学生信息,并计算总分将学生信息与总分一同写入文本文件 需求:键盘录入3个学生信息(姓名,语文成绩,数学成绩) 求出每个学生的总分 ,并…

一起学Git【第六节:查看版本差异】

git diff是 Git 版本控制系统中用于展示差异的强大工具。他可以用于查看文件在工作区、暂存区和版本库之间的差异、任意两个指定版本之间的差异和两个分支之间的差异等,接下来进行详细的介绍。 1.显示工作区与暂存区之间的差异 # 显示工作区和暂存区之间的差异,后面不加参数…

Selenium之Web元素定位

Web页面主要由HTML、CSS和JavaScript脚本构成,当前大部分页面都是动态页面。Web页面中的各类视觉元素,如文本框、按钮、复选框、图品、超链接和表等,在Selenium中都被称为页面元素(web Elements)。 Selenium提供了八种…

【基础篇】三、MySQL表结构的操作

文章目录 Ⅰ. 创建表1、语法2、创建表样例3、创建和其它表一样结构的表 Ⅱ. 查看表结构1、查看数据库中的表2、查看指定表的属性3、获取表的创建语句 Ⅲ. 删除表Ⅳ. 修改表结构1、向表中插入新的字段2、删除表中的字段3、修改表名4、修改字段属性 Ⅰ. 创建表 1、语法 create …

慧集通iPaaS低代码平台培训-基础篇

训练使用素材: 1.数据源: 单号业务日期工厂仓库物料单位数量批次0100012022-5-1210031001030001kg500202304150100012022-5-1210031001030001kg122202304150100012022-5-1210031001030001kg1250202304150100012022-5-1210031001030002kg130202304110100…