外贸做网站公司哪家好,网站建设属什么合同,wordpress自动采集导入,用wordpress好还是【关键字】
元服务卡片、卡片展示动态数据、更新卡片数据 【写在前面】 本篇文章主要介绍开发元服务卡片时#xff0c;如何实现卡片中动态显示数据功能#xff0c;并实现定时数据刷新。本篇文章通过实现定时刷新卡片中日期数据为例#xff0c;讲述展示动态数据与更新数据功…【关键字】
元服务卡片、卡片展示动态数据、更新卡片数据 【写在前面】 本篇文章主要介绍开发元服务卡片时如何实现卡片中动态显示数据功能并实现定时数据刷新。本篇文章通过实现定时刷新卡片中日期数据为例讲述展示动态数据与更新数据功能。 【开发步骤】
1、在卡片的index.html页面中定义动态数据并在index.json中定义变量此处以curDate为例定义默认值1990-01-01。 2、在卡片第一次添加时需要curDate显示当前日期需要在MainAbility.java的onCreateForm中进行数据传递。通过查看onCreateForm中默认代码发现最终会走到formController.bindFormData方法中即对应WidgetImpl.java文件的bindFormData方法此处可以通过两种方式修改代码传递数据
1更改WidgetImpl.java文件的bindFormData方法内容
2更改MainAbility.java文件的onCreateForm方法内容不返回formController.bindFormData(formId);直接构造ProviderFormInfo数据返回
上述两种方式都需要构造FormBindingData数据通过providerFormInfo.setJsBindingData(formBindingData)设置卡片数据。此处以第一种方式为例添加如下代码卡片添加时会默认显示当前日期。
Overridepublic ProviderFormInfo bindFormData(long formId) {HiLog.info(TAG, bindFormData start);// 获取当前日期此处也可修改为通过http接口动态获取数据Date date new Date();SimpleDateFormat simpleDateFormat new SimpleDateFormat(yyyy-MM-dd);String curDateStr simpleDateFormat.format(date);// 将需要刷新的数据通过ZSONObject放入formBindingData中ZSONObject object new ZSONObject();object.put(curDate, curDateStr);FormBindingData formBindingData new FormBindingData(object);HiLog.info(TAG, formBindingData: ZSONObject.toZSONString(formBindingData));// onCreateForm方法会返回providerFormInfo所以通过providerFormInfo.setJsBindingData刷新卡片数据ProviderFormInfo providerFormInfo new ProviderFormInfo();providerFormInfo.setJsBindingData(formBindingData);return providerFormInfo;}
3、接下来需实现更新curDate数据功能。若卡片已经添加如何实现定时更新卡片数据。此时需先了解卡片更新机制参考此文档“配置卡片配置文件”了解卡片的定时刷新updateDuration和定点刷新scheduledUpdateTime机制本篇文章便于调试采用定点刷新机制进行卡片数据刷新。
了解刷新机制后通过配置触发卡片数据刷新代码会走到MainAbility.java的onUpdateForm方法中通过构造FormBindingData数据通过updateForm方法实现数据刷新代码如下所示
Overrideprotected void onUpdateForm(long formId) {HiLog.info(TAG, onUpdateForm);super.onUpdateForm(formId);// 获取当前日期Date date new Date();SimpleDateFormat simpleDateFormat new SimpleDateFormat(yyyy-MM-dd);String curDateStr simpleDateFormat.format(date);// 将需要刷新的数据通过ZSONObject放入formBindingData中ZSONObject object new ZSONObject();object.put(curDate, 2024-01-01); // 此处为了调试将更新的数据设置为定值可在此处修改为从http接口获取的结果进行数据更新FormBindingData formBindingData new FormBindingData(object);HiLog.info(TAG, formBindingData: ZSONObject.toZSONString(formBindingData));// 更新卡片onUpdateForm方法无返回值所以通过updateForm设置数据try {boolean isUpdate updateForm(formId, formBindingData);HiLog.info(TAG, onUpdateForm isUpdate: isUpdate);} catch (FormException e) {HiLog.info(TAG, onUpdateForm FormException);// todo 抛异常返回默认数据此部分自行处理可设置默认值}}
4、此时即可运行工程项目会发现首次添加卡片时卡片会显示当前日期。
但是如何调试才能测试更新卡片数据功能呢步骤3中了解了卡片更新机制后可将config.json中scheduledUpdateTime修改当前时间后2分钟如当前是5:12可设置为5:14updateDuration设置为1运行工程添加卡片然后将updateDuration设置为0此时再次运行工程添加卡片。
现象为5:14前卡片当前日期显示今天日期有代码获取当前日志等到5:14时卡片显示日期就会变成onUpdateForm中传递的默认日期“2024-01-01”了。
请注意config.json中更新机制已实际功能需要为准此处仅用于功能调试。
到这里就完成了卡片动态数据显示与定点更新卡片数据功能。 【服务卡片开发相关文档】
3.0服务卡片开发指导包含基于JS UI和Java UI开发卡片https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-widget-overview-0000001062607955
3.0Java服务卡片JS UI组件https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-service-widget-file-0000001153028529
3.1/4.0FA模型服务卡片开发指导https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/widget-development-fa-0000001427902244-V3
3.1/4.0Stage模型服务卡片开发指导https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/service-widget-overview-0000001536226057-V3