卡片数据的交互分为定时刷新、定点刷新、下一次刷新、代理刷新四种:
{
"forms": [
{
"name": "widget",
"description": "This is a service widget.",
"src": "./ets/widget/pages/WidgetCard.ets",
"uiSyntax": "arkts",
"window": {
"designWidth": 720,
"autoDesignWidth": true
},
"colorMode": "auto",
"isDefault": true,
"updateEnabled": true,
"scheduledUpdateTime": "10:30",
"updateDuration": 2, // 设置卡片定时刷新的更新周期(单位为30分钟,取值为自然数)
"defaultDimension": "2*2",
"supportDimensions": ["2*2"]
}
]
} {
"forms": [
{
"name": "widget",
"description": "This is a service widget.",
"src": "./ets/widget/pages/WidgetCard.ets",
"uiSyntax": "arkts",
"window": {
"designWidth": 720,
"autoDesignWidth": true
},
"colorMode": "auto",
"isDefault": true,
"updateEnabled": true, // 使能刷新功能
"scheduledUpdateTime": "10:30", // 设置卡片的定点刷新的时刻
"updateDuration": 0,
"defaultDimension": "2*2",
"supportDimensions": ["2*2"]
}
]
} 应用使用了错误的刷新模式,或者未开启卡片数据刷新功能,比如日期类应用应在每天24:00时刷新数据。
卡片框架在重启时是使用onAddForm()回调方法的返回值,若应用重启前调用updateForm()更新的数据和onAddForm()方法返回的数据不一致,会导致设备重启前后卡片数据不一致的现象。
日志中出现关键字:“Cannot get SourceMap info, dump raw stack”。此报错一般是开发者的API写法错误,或者引入了不支持卡片的模块,导致了相关模块的报错,从而导致卡片内容加载失败或出现白屏。
当com.ohos.formrenderservice中出现关键日志can't find this page xxx.abc path。
一般是.abc文件打包时出现了问题,需要应用确认hap包里xxx.abc是否存在,位置是否正确。
根据业务场景选择合适的刷新模式。
需要对数据做持久化处理。例如使用关系型数据库存储卡片最新数据,在FormExtensionAbility的onAddForm()生命周期回调中,获取数据库中的最新数据后,使用updateForm()方法更新卡片。
在该路径下放入正确的abc文件,在DevEco Studio中通过Build->Clean Project清理后,重新编译运行。