ArkTS卡片主动刷新
本文主要提供主动刷新的开发指导,刷新流程请参考主动刷新概述。
卡片提供方主动刷新卡片内容
卡片提供方可以通过updateForm接口进行主动刷新。推荐与卡片生命周期回调onFormEvent、onUpdateForm、onAddForm接口搭配使用。
import { formBindingData, formProvider } from '@kit.FormKit';
import { BusinessError } from '@kit.BasicServicesKit';
let storage = new LocalStorage();
@Entry(storage)
@Component
struct Index {
@StorageLink('formId') formId: string = '';
@StorageLink('formData') formData: Object | string = '';
build() {
Column() {
Column() {
//...
Button() {
//...
}
.onClick(() => {
console.info(`click to check updateForm, formId: ${this.formId}`);
const formInfo: formBindingData.FormBindingData = formBindingData.createFormBindingData(this.formData);
// formId需要为实际需要刷新的卡片ID
formProvider.updateForm(this.formId, formInfo).then(() => {
console.info('updateForm success.');
}).catch((error: BusinessError) => {
console.error(`updateForm fail, code: ${error?.code}, message: ${error?.message}`);
})
})
.margin(5)
}
//...
}
//...
}
}
卡片使用方主动刷新卡片内容(仅对系统应用开放)
由于定时、定点刷新存在时间限制,卡片使用方可以通过调用requestForm接口向卡片管理服务请求主动触发卡片的刷新。卡片管理服务触发卡片提供方FormExtensionAbility中的onUpdateForm生命周期回调,回调中可以使用updateForm接口刷新卡片内容。
import { formHost } from '@kit.FormKit';
import { BusinessError } from '@kit.BasicServicesKit';
let storage = new LocalStorage();
@Entry(storage)
@Component
struct Index {
@StorageLink('formId') formId: number = 0;
build() {
Column() {
Column() {
//...
Button() {
//...
}
.onClick(() => {
console.info(`click to check requestForm, formId: ${this.formId}`);
// formId需要为实际需要刷新的卡片ID
formHost.requestForm(this.formId.toString()).then(() => {
console.info('requestForm success.');
}).catch((error: BusinessError) => {
console.error(`requestForm fail, code: ${error?.code}, message: ${error?.message}`);
})
})
.margin(5)
}
//...
}
//...
}
}