当前位置: 首页 > news >正文

南昌网站建设培训班网站开发上线流程

南昌网站建设培训班,网站开发上线流程,怎么制作属于自己的app,国内最新军事新闻卡片事件能力说明 ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。 接口定义:postCardAction(component: Object, action: Object): void 接口…

卡片事件能力说明

ArkTS卡片中提供了postCardAction()接口用于卡片内部和提供方应用间的交互,当前支持router、message和call三种类型的事件,仅在卡片中可以调用。

点击放大

接口定义:postCardAction(component: Object, action: Object): void

接口参数说明:

参数名参数类型必填参数描述
componentObject当前自定义组件的实例,通常传入this。
actionObjectaction的具体描述,详情见下表。

action参数说明:

KeyValue样例描述
“action”stringaction的类型,支持三种预定义的类型:“router”:跳转到提供方应用的指定UIAbility。“message”:自定义消息。触发后会调用提供方FormExtensionAbility的onFormEvent()生命周期回调。“call”:后台启动提供方应用。触发后会拉起提供方应用的指定UIAbility(仅支持launchType为singleton的UIAbility,即启动模式为单实例的UIAbility),但不会调度到前台。提供方应用需要具备后台运行权限(ohos.permission.KEEP_BACKGROUND_RUNNING)。
“bundleName”string“router” / “call” 类型时跳转的包名,可选。
“moduleName”string“router” / “call” 类型时跳转的模块名,可选。
“abilityName”string“router” / “call” 类型时跳转的UIAbility名,必填。
“params”Object当前action携带的额外参数,内容使用JSON格式的键值对形式。"call"类型时需填入参数’method’,且类型需要为string类型,用于触发UIAbility中对应的方法,必填。

postCardAction()接口示例代码:

Button('跳转').width('40%').height('20%').onClick(() => {postCardAction(this, {'action': 'router','bundleName': 'com.example.myapplication','abilityName': 'EntryAbility','params': {'message': 'testForRouter' // 自定义要发送的message}});})
Button('拉至后台').width('40%').height('20%').onClick(() => {postCardAction(this, {'action': 'call','bundleName': 'com.example.myapplication','abilityName': 'EntryAbility','params': {'method': 'fun', // 自定义调用的方法名,必填'message': 'testForCall' // 自定义要发送的message}});})

使用router事件跳转到指定UIAbility

在卡片中使用postCardAction接口的router能力,能够快速拉起卡片提供方应用的指定UIAbility,因此UIAbility较多的应用往往会通过卡片提供不同的跳转按钮,实现一键直达的效果。例如相机卡片,卡片上提供拍照、录像等按钮,点击不同按钮将拉起相机应用的不同UIAbility,从而提升用户的体验。

img

通常使用按钮控件来实现页面拉起,示例代码如下:

  • 在卡片页面中布局两个按钮,点击其中一个按钮时调用postCardAction向指定UIAbility发送router事件,并在事件内定义需要传递的内容。

    @Entry
    @Component
    struct WidgetCard {build() {Column() {Button('功能A').margin('20%').onClick(() => {console.info('Jump to EntryAbility funA');postCardAction(this, {'action': 'router','abilityName': 'EntryAbility', // 只能跳转到当前应用下的UIAbility'params': {'targetPage': 'funA' // 在EntryAbility中处理这个信息}});})Button('功能B').margin('20%').onClick(() => {console.info('Jump to EntryAbility funB');postCardAction(this, {'action': 'router','abilityName': 'EntryAbility', // 只能跳转到当前应用下的UIAbility'params': {'targetPage': 'funB' // 在EntryAbility中处理这个信息}});})}.width('100%').height('100%')}
    }
    
  • 在UIAbility中接收router事件并获取参数,根据传递的params不同,选择拉起不同的页面。

    import UIAbility from '@ohos.app.ability.UIAbility';
    import window from '@ohos.window';let selectPage = "";
    let currentWindowStage = null;export default class CameraAbility extends UIAbility {// 如果UIAbility第一次启动,在收到Router事件后会触发onCreate生命周期回调onCreate(want, launchParam) {// 获取router事件中传递的targetPage参数console.info("onCreate want:" + JSON.stringify(want));if (want.parameters.params !== undefined) {let params = JSON.parse(want.parameters.params);console.info("onCreate router targetPage:" + params.targetPage);selectPage = params.targetPage;}}// 如果UIAbility已在后台运行,在收到Router事件后会触发onNewWant生命周期回调onNewWant(want, launchParam) {console.info("onNewWant want:" + JSON.stringify(want));if (want.parameters.params !== undefined) {let params = JSON.parse(want.parameters.params);console.info("onNewWant router targetPage:" + params.targetPage);selectPage = params.targetPage;}if (currentWindowStage != null) {this.onWindowStageCreate(currentWindowStage);}}onWindowStageCreate(windowStage: window.WindowStage) {let targetPage;// 根据传递的targetPage不同,选择拉起不同的页面switch (selectPage) {case 'funA':targetPage = 'pages/FunA';break;case 'funB':targetPage = 'pages/FunB';break;default:targetPage = 'pages/Index';}if (currentWindowStage === null) {currentWindowStage = windowStage;}windowStage.loadContent(targetPage, (err, data) => {if (err && err.code) {console.info('Failed to load the content. Cause: %{public}s', JSON.stringify(err));return;}});}
    };
    

使用call事件拉起指定UIAbility到后台

许多应用希望借助卡片的能力,实现和应用在前台时相同的功能。例如音乐卡片,卡片上提供播放、暂停等按钮,点击不同按钮将触发音乐应用的不同功能,进而提高用户的体验。在卡片中使用postCardAction接口的call能力,能够将卡片提供方应用的指定UIAbility拉到后台。同时,call能力提供了调用应用指定方法、传递数据的功能,使应用在后台运行时可以通过卡片上的按钮执行不同的功能。

通常使用按钮控件来触发call事件,示例代码如下:

  • 在卡片页面中布局两个按钮,点击其中一个按钮时调用postCardAction向指定UIAbility发送call事件,并在事件内定义需要调用的方法和传递的数据。需要注意的是,method参数为必选参数,且类型需要为string类型,用于触发UIAbility中对应的方法。

    @Entry
    @Component
    struct WidgetCard {build() {Column() {Button('功能A').margin('20%').onClick(() => {console.info('call EntryAbility funA');postCardAction(this, {'action': 'call','abilityName': 'EntryAbility', // 只能跳转到当前应用下的UIAbility'params': {'method': 'funA' // 在EntryAbility中调用的方法名}});})Button('功能B').margin('20%').onClick(() => {console.info('call EntryAbility funB');postCardAction(this, {'action': 'call','abilityName': 'EntryAbility', // 只能跳转到当前应用下的UIAbility'params': {'method': 'funB', // 在EntryAbility中调用的方法名'num': 1 // 需要传递的其他参数}});})}.width('100%').height('100%')}
    }
    
  • 在UIAbility中接收call事件并获取参数,根据传递的method不同,执行不同的方法。其余数据可以通过readString的方式获取。需要注意的是,UIAbility需要onCreate生命周期中监听所需的方法。

    import UIAbility from '@ohos.app.ability.UIAbility';function FunACall(data) {// 获取call事件中传递的所有参数console.log('FunACall param:' + JSON.stringify(data.readString()));return null;
    }function FunBCall(data) {console.log('FunACall param:' + JSON.stringify(data.readString()));return null;
    }export default class CameraAbility extends UIAbility {// 如果UIAbility第一次启动,在收到call事件后会触发onCreate生命周期回调onCreate(want, launchParam) {try {// 监听call事件所需的方法this.callee.on('funA', FunACall);this.callee.on('funB', FunBCall);} catch (error) {console.log('register failed with error. Cause: ' + JSON.stringify(error));}}// 进程退出时,解除监听onDestroy() {try {this.callee.off('funA');this.callee.off('funB');} catch (error) {console.log('register failed with error. Cause: ' + JSON.stringify(error));}}
    };
    
http://www.yayakq.cn/news/753653/

相关文章:

  • 湖北省建设厅网站营销师是做什么的
  • 网站页面打开速度二维码活码生成器在线制作
  • 做体育直播网站自己怎么做一个小程序
  • 代码素材网站程序员网站需要多少钱
  • 提供邯郸wap网站建设网络推广与seo的区别在哪里
  • 网站关键词搜不到了关于电商网站规划方案
  • 微网站栏目图标互联网产品推广
  • 佛山国内快速建站wordpress缓存首页
  • 建设一个很大的视频网站需要多少钱邯郸市都有哪些网络推广公司
  • 网站建设运营费用预算excel表格做网站
  • 做微商什么是官方网站电商关键词工具
  • 网站建设jz518湖南网站优化外包费用
  • 公众号网站qq小程序怎么关闭
  • 网站seo优化费用网站链接查询
  • 武昌建设局网站网站设计与建设的
  • 可以做图的网站wordpress后台怎么登入
  • 沧州免费网站建设怎么制作博客网站
  • 广东南方通信建设有限公司官方网站phpcms做视频网站首页
  • 淮北矿业集团工程建设公司网站网站 asp.net php
  • 网站建设玖金手指排名11如何用ps制作一个网页
  • 页面具有动态效果网站建设个人网页制作成品田田田田田田田田
  • 网站建设360元起全包长沙网络推广招聘
  • 一个设计网站多少钱外贸网站做排名
  • 宁波网站建设最好建设企业网站官网企业网银
  • 信用体系网站建设一体化建设高级wordpress搜索引擎
  • wordpress搭建商城网站广州搜索引擎优化方法
  • 营商环境建设局网站新网个人网站备案
  • 玄圭互联网站建设推广选择邯郸网站建设
  • 宠物网站首页模板在家建设一个网站需要什么
  • 怎么做服务网站毕设做网站和app