定時刷新和定點刷新

2024-01-25 12:22 更新

當前卡片框架提供了如下幾種按時間刷新卡片的方式:

  • 定時刷新:表示在一定時間間隔內(nèi)調(diào)用onUpdateForm的生命周期回調(diào)函數(shù)自動刷新卡片內(nèi)容。可以在form_config.json配置文件的updateDuration字段中進行設置。例如,可以將刷新時間設置為每小時一次。注意:updateDuration(定時刷新)優(yōu)先級比scheduledUpdateTime(定點刷新)高,配置定時刷新后,定點刷新將失效。
    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, // 設置卡片定時刷新的更新周期(單位為30分鐘,取值為自然數(shù))
    17. "defaultDimension": "2*2",
    18. "supportDimensions": ["2*2"]
    19. }
    20. ]
    21. }
  • 定點刷新:表示每天在某個時間點刷新,在form_config.json文件中配置,詳見scheduledUpdateTime字段。例如,每天在10:30更新卡片內(nèi)容。
    說明

    當同時配置了定時刷新(updateDuration)和定點刷新(scheduledUpdateTime)時,定時刷新的優(yōu)先級更高。如果想要配置定點刷新,則需要將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", // 設置卡片的定點刷新的時刻
    16. "updateDuration": 0,
    17. "defaultDimension": "2*2",
    18. "supportDimensions": ["2*2"]
    19. }
    20. ]
    21. }
  • 下次刷新:通過setFormNextRefreshTime接口指定卡片的下一次刷新時間(最短時間5分鐘),例如,在接口調(diào)用的5分鐘后刷新卡片內(nèi)容。
    1. import formProvider from '@ohos.app.form.formProvider';
    2. let formId = '123456789'; // 實際業(yè)務場景需要使用正確的formId
    3. try {
    4. // 設置過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ā)定時、定點或主動刷新后,系統(tǒng)會調(diào)用FormExtensionAbility的onUpdateForm生命周期回調(diào),在回調(diào)中,可以使用updateForm進行提供方刷新卡片。onUpdateForm生命周期回調(diào)參考通過FormExtensionAbility刷新卡片內(nèi)容

說明

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

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

3. 定時刷新和定點刷新僅在屏幕亮屏情況下才會觸發(fā),在滅屏場景下僅會將記錄刷新動作,待亮屏時統(tǒng)一進行刷新。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號