定時(shí)刷新和定點(diǎn)刷新

2024-01-25 12:22 更新

當(dāng)前卡片框架提供了如下幾種按時(shí)間刷新卡片的方式:

  • 定時(shí)刷新:表示在一定時(shí)間間隔內(nèi)調(diào)用onUpdateForm的生命周期回調(diào)函數(shù)自動(dòng)刷新卡片內(nèi)容。可以在form_config.json配置文件的updateDuration字段中進(jìn)行設(shè)置。例如,可以將刷新時(shí)間設(shè)置為每小時(shí)一次。注意:updateDuration(定時(shí)刷新)優(yōu)先級(jí)比scheduledUpdateTime(定點(diǎn)刷新)高,配置定時(shí)刷新后,定點(diǎn)刷新將失效。
    1. {
    2. "forms": [
    3. {
    4. "name": "widget",
    5. "description": "This is a service widget.",
    6. "src": "./ets/widget/pages/WidgetCard.ets",
    7. "uiSyntax": "arkts",
    8. "window": {
    9. "designWidth": 720,
    10. "autoDesignWidth": true
    11. },
    12. "colorMode": "auto",
    13. "isDefault": true,
    14. "updateEnabled": true, // 使能刷新功能
    15. "scheduledUpdateTime": "10:30",
    16. "updateDuration": 2, // 設(shè)置卡片定時(shí)刷新的更新周期(單位為30分鐘,取值為自然數(shù))
    17. "defaultDimension": "2*2",
    18. "supportDimensions": ["2*2"]
    19. }
    20. ]
    21. }
  • 定點(diǎn)刷新:表示每天在某個(gè)時(shí)間點(diǎn)刷新,在form_config.json文件中配置,詳見(jiàn)scheduledUpdateTime字段。例如,每天在10:30更新卡片內(nèi)容。
    說(shuō)明

    當(dāng)同時(shí)配置了定時(shí)刷新(updateDuration)和定點(diǎn)刷新(scheduledUpdateTime)時(shí),定時(shí)刷新的優(yōu)先級(jí)更高。如果想要配置定點(diǎn)刷新,則需要將updateDuration配置為0。

    1. {
    2. "forms": [
    3. {
    4. "name": "widget",
    5. "description": "This is a service widget.",
    6. "src": "./ets/widget/pages/WidgetCard.ets",
    7. "uiSyntax": "arkts",
    8. "window": {
    9. "designWidth": 720,
    10. "autoDesignWidth": true
    11. },
    12. "colorMode": "auto",
    13. "isDefault": true,
    14. "updateEnabled": true, // 使能刷新功能
    15. "scheduledUpdateTime": "10:30", // 設(shè)置卡片的定點(diǎn)刷新的時(shí)刻
    16. "updateDuration": 0,
    17. "defaultDimension": "2*2",
    18. "supportDimensions": ["2*2"]
    19. }
    20. ]
    21. }
  • 下次刷新:通過(guò)setFormNextRefreshTime接口指定卡片的下一次刷新時(shí)間(最短時(shí)間5分鐘),例如,在接口調(diào)用的5分鐘后刷新卡片內(nèi)容。
    1. import formProvider from '@ohos.app.form.formProvider';
    2. let formId = '123456789'; // 實(shí)際業(yè)務(wù)場(chǎng)景需要使用正確的formId
    3. try {
    4. // 設(shè)置過(guò)5分鐘后更新卡片內(nèi)容
    5. formProvider.setFormNextRefreshTime(formId, 5, (err, data) => {
    6. if (err) {
    7. console.error(`Failed to setFormNextRefreshTime. Code: ${err.code}, message: ${err.message}`);
    8. return;
    9. } else {
    10. console.info('Succeeded in setFormNextRefreshTimeing.');
    11. }
    12. });
    13. } catch (err) {
    14. console.error(`Failed to setFormNextRefreshTime. Code: ${err.code}, message: ${err.message}`);
    15. }

在觸發(fā)定時(shí)、定點(diǎn)或主動(dòng)刷新后,系統(tǒng)會(huì)調(diào)用FormExtensionAbility的onUpdateForm生命周期回調(diào),在回調(diào)中,可以使用updateForm進(jìn)行提供方刷新卡片。onUpdateForm生命周期回調(diào)參考通過(guò)FormExtensionAbility刷新卡片內(nèi)容

說(shuō)明

1. 定時(shí)刷新有配額限制,每張卡片每天最多通過(guò)定時(shí)方式觸發(fā)刷新50次,定時(shí)刷新包含卡片配置項(xiàng)updateDuration和調(diào)用setFormNextRefreshTime兩種,當(dāng)達(dá)到50次配額后,無(wú)法通過(guò)定時(shí)方式再次觸發(fā)刷新,刷新次數(shù)會(huì)在每天的0點(diǎn)重置。

2. 當(dāng)前定時(shí)刷新使用同一個(gè)計(jì)時(shí)器進(jìn)行計(jì)時(shí),因此卡片定時(shí)刷新的第一次刷新會(huì)有最多30分鐘的偏差。比如第一張卡片A(每隔半小時(shí)刷新一次)在3點(diǎn)20分添加成功,定時(shí)器啟動(dòng)并每隔半小時(shí)觸發(fā)一次事件,第二張卡片B(每隔半小時(shí)刷新一次)在3點(diǎn)40分添加成功,在3點(diǎn)50分定時(shí)器事件觸發(fā)時(shí),卡片A觸發(fā)定時(shí)刷新,卡片B會(huì)在下次事件(4點(diǎn)20分)中才會(huì)觸發(fā)。

3. 定時(shí)刷新和定點(diǎn)刷新僅在屏幕亮屏情況下才會(huì)觸發(fā),在滅屏場(chǎng)景下僅會(huì)將記錄刷新動(dòng)作,待亮屏?xí)r統(tǒng)一進(jìn)行刷新。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)