色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenHarmonyApp啟動頁后記

ITMING ? 來源:ITMING ? 作者:ITMING ? 2023-03-03 16:43 ? 次閱讀

1 回顧

通過DevEco Studio端云協同開發OpenHarmony/HarmonyOS應用程序(以下簡稱應用)集成AppGallery Connect(以下簡稱AGC)平臺云函數、云數據庫、云存儲三篇文章筆者從創建端云協同應用程序開始,逐步對云函數、云數據庫、云存儲簡單的數據讀取做了簡單的介紹。通過使用云數據庫、云存儲相結合的方式使應用的啟動頁能夠動態化,即可以在不更新應用的情況下更改啟動頁的參數已達到啟動頁的動態化。

2 問題及解決方案

問題: 由于啟動頁參數來源于云數據庫、云存儲,啟動頁數據渲染前會受網絡影響出現白屏。

解決方案: 為啟動頁數據單獨封裝獲取方法,在啟動頁新增狀態值,數據未加載完成后顯示當前應用的icon圖標,數據加載完成后渲染實際獲取到的數據。

注: 若讀者有其他的處理方法可與筆者共同探討一下。

3 優化調用方法

使用async將函數異步化,使用await獲取Promise的值。

3.1 云數據庫獲取數據方法異步化

每次使用存儲區都要在使用完成后釋放,新增關閉存儲區方法。

// service/CloudDBService.ts
// @ts-ignore
import * as schema from './app-schema.json';
import { splash } from './splash';
import {
    AGConnectCloudDB,
    CloudDBZoneConfig,
    CloudDBZone,
    CloudDBZoneQuery
} from '@hw-agconnect/database-ohos';

import { AGCRoutePolicy } from '@hw-agconnect/core-ohos';

import { getAGConnect } from './AgcConfig';

export class CloudDBService {

    private static readonly ZONE_NAME = "cloudDBZoneSplash";
    private static cloudDB: AGConnectCloudDB;
    private static cloudDBZone: CloudDBZone;
    private static isInit: boolean;

    public static async init(context: any): Promise<boolean> {
        if (this.isInit) {
            return;
        }
        try {
            // 初始化agc
            getAGConnect(context);
            // 初始化Cloud DB
            await AGConnectCloudDB.initialize(context);
            // 獲取對應數據處理位置的CloudDB實例
            this.cloudDB = await AGConnectCloudDB.getInstance(AGCRoutePolicy.CHINA);
            // 創建對象類型
            this.cloudDB.createObjectType(schema);
            // 打開存儲區
            await this.openZone(this.ZONE_NAME);
            this.isInit = true;
        } catch (err) {
            console.error(JSON.stringify(err))
        }
        return Promise.resolve(this.isInit);
    }

    // 打開存儲區
    private static async openZone(zoneName: string): Promise

3.2 云存儲獲取數據方法異步化

// services/cloudstorage/CloudStorageService.ts
import agconnect from '@hw-agconnect/api-ohos';
import "@hw-agconnect/cloudstorage-ohos";

import { getAGConnect } from '../AgcConfig';

export class CloudStorageService {

    public static async init(context: any, path: string): Promise<string> {
        try {
            getAGConnect(context);
            // 初始化默認實例
            const storage = agconnect.cloudStorage();
            // 創建需要下載文件的引用
            const storageReference = await storage.storageReference();
            var reference = await storageReference.child(path);
            return reference.getDownloadURL();
        } catch (err) {
            console.error(JSON.stringify(err));
        }
    }
}

4 為啟動頁數據獲取封裝專用方法

可以將一些處理邏輯放在該方法中處理。

// services/SplashService.ts
import { splash } from './splash';
import { CloudDBService } from '../services/CloudDBService';
import { CloudStorageService } from '../services/cloudstorage/CloudStorageService';

export class SplashService {

    public static async querySplash(context: any): Promise

5 改寫啟動頁

啟動頁新增狀態碼,用于數據未加載完成呈現給用戶的顯示界面,規避數據未獲取導致的白屏現象。

@State isSkip: boolean = false;

aboutToAppear()方法中執行獲取啟動頁數據的方法。

aboutToAppear() {
    this.isSkip = false;
    SplashService.querySplash(getContext(this)).then((ret) => {
      this.isSkip = true;
      this.result = ret;
    })
  }

頁面中使用if(){}else{}條件語句判斷渲染的組件,從而規避數據請求時間導致的白屏。

if (this.isSkip) {
  SplashPage({ mSplash: {
    timer: this.result.timer,
    isLogo: this.result.isLogo,
    backgroundImg: this.result.backgroundImg,
    companyName: this.result.companyName,
    mFontColor: this.result.mFontColor
  }, skip: this.onSkip })
} else {
  Column() {
    Image($r('app.media.icon')).objectFit(ImageFit.None)
  }
  .width('100%').height('100%')
}

通過更改AGC平臺云數據庫中啟動頁數據狀態,可以實現下次啟動應用程序,啟動頁呈現不同內容。使用場景如新聞類App可以在啟動頁呈現一條配備圖片的熱文;常規App可以在啟動頁呈現一條經典語錄;實現不同節日在啟動頁呈現問候信息

7 后記

本文所記為之前文章的總結,針對獲取AGC平臺各項服務的數據,可直接調用對應的方法即可。若出現復雜的情況,如后面筆者將實現認證服務登錄,并將用戶信息存儲到云數據庫中,可以結合云函數,在用戶登錄的時候,直接調用云函數去保存用戶信息,存儲方法可以通過云函數的AUTH觸發器實現數據存儲云數據庫中;再如用戶上傳圖片,生成縮略圖,也可以利用云函數將原圖和縮略圖一同保存到云存儲中。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HarmonyOS
    +關注

    關注

    79

    文章

    1979

    瀏覽量

    30274
  • OpenHarmony
    +關注

    關注

    25

    文章

    3727

    瀏覽量

    16382
收藏 人收藏

    評論

    相關推薦

    OpenHarmony之開機優化

    OpenHarmony已經支持了Bootchart工具,我們可以直接使用Bootchart工具,Bootchart工具介紹如下: 概述 Bootchart是一個用于系統啟動過程性能分析的開源軟件工具
    發表于 07-01 16:39

    OpenHarmony 明星開發板和應用招募啟動,等你來!

    為助力企業和開發者快速找到好用的開發板和應用,推動OpenHarmony生態發展,現啟動OpenHarmony 明星開發板和應用招募”評選活動!本次活動旨在為 OpenHarmony
    發表于 09-14 15:21

    基于OpenHarmony【O了個H】 #OpenHarmony #HarmonyOS

    HarmonyOSOpenHarmony
    程皖Orz
    發布于 :2022年09月22日 10:15:45

    龍芯openharmony 【2】啟動分析

    開源項目見:首發!成功移植OpenHarmony到龍芯開發板,代碼開源~1 啟動文件和鏈接腳本龍芯開發板的板級代碼位于:device\loongson\ls1c300b_hrst 文件夾其中,啟動
    發表于 12-15 19:12

    如何導入OpenHarmony源碼

      Import Project適用于打開DevEco Device Tool創建的工程項目和獲取的OpenHarmony源碼。如果是打開OpenHarmony源碼,在打開工程時,點擊Import
    發表于 04-12 11:16

    RK3399/3568 適配OpenHarmony應用開發環境搭建

    ,可通過歡迎的Configure (或圖標)> Settings > SDK Manager > OpenHarmony SDK界面,點擊
    發表于 04-12 18:54

    《沉浸式剖析OpenHarmony源代碼》開放100樣章

    《沉浸式剖析OpenHarmony源代碼》開放100樣章梁開祝2022.09.29這本書正在排版印刷中,不出意外的話,在10月中下旬便可面市了。目前,此書的定價和訂購鏈接暫時還沒有確定,待有確定
    發表于 09-29 11:33

    openharmony啟動方式

    6 月 1 日,開放原子開源基金會( OpenAtom Foundation,以下簡稱“基金會”)正式發布 OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)2.0 Canary。
    的頭像 發表于 06-22 10:59 ?1933次閱讀

    基于openharmony適配移植的導航控件

    項目介紹 項目名稱:GuideView 所屬系列:openharmony的第三方組件適配移植 功能:本系統能夠快速的為一個Ability里的任何一個Component控件創建一個遮罩式的導航,并且
    發表于 04-07 10:07 ?2次下載

    2022 OpenHarmony組件大賽,共建開源組件

    OpenHarmony官網,點擊【互動】,可在【活動】頁面進入大賽活動。本次大賽旨在鼓勵開發者積極參與OpenHarmony開源組件生態建設,貢獻優秀開源組件作品,與廣大OpenHarmon
    的頭像 發表于 04-26 17:31 ?1576次閱讀
    2022 <b class='flag-5'>OpenHarmony</b>組件大賽,共建開源組件

    自定義HarmonyOS啟動組件

    啟動作為應用程序首次出現的頁面,該頁面提供一些預加載數據的提前獲取,防止應用程序出現白屏等異常,如是否第一次訪問應用程序并開啟應用歡迎;判斷用戶登錄信息進行頁面跳轉;消息信息懶加載等。 常見
    的頭像 發表于 02-17 13:00 ?596次閱讀
    自定義HarmonyOS<b class='flag-5'>啟動</b><b class='flag-5'>頁</b>組件

    OpenHarmony競賽訓練營正式啟動

    點擊藍字 ╳ 關注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony OpenAtom OpenHarmony(簡稱“OpenHarmony”)競賽訓練營正式開
    的頭像 發表于 10-07 21:10 ?590次閱讀

    資訊速遞 | OpenHarmony競賽訓練營重磅啟動,邀您共享OpenHarmony探索與創新之旅!

    OpenHarmony競賽訓練營活動旨在引導高校學生進行OpenHarmony產學研用,培養更多應用型人才和產業需求有效鏈接,吸引更多的高校師生參與到OpenHarmony的開發和應用中。本期
    的頭像 發表于 10-10 10:27 ?783次閱讀
    資訊速遞 | <b class='flag-5'>OpenHarmony</b>競賽訓練營重磅<b class='flag-5'>啟動</b>,邀您共享<b class='flag-5'>OpenHarmony</b>探索與創新之旅!

    報名啟動OpenHarmony源碼轉換器—多線程特性轉換賽題

    點擊藍字 ╳ 關注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony 原文標題:報名啟動OpenHarmony源碼轉換器—多線程特性轉換賽題 文章出處:【微信
    的頭像 發表于 12-29 16:15 ?730次閱讀
    報名<b class='flag-5'>啟動</b>|<b class='flag-5'>OpenHarmony</b>源碼轉換器—多線程特性轉換賽題

    OpenHarmony統一互聯PMC啟動孵化

    在2024年10月12日于上海舉辦的第三屆OpenHarmony技術大會上,OpenHarmony統一互聯PMC(項目群項目管理委員會)正式啟動孵化。 OpenHarmony項目群工作
    的頭像 發表于 10-21 11:44 ?497次閱讀
    <b class='flag-5'>OpenHarmony</b>統一互聯PMC<b class='flag-5'>啟動</b>孵化
    主站蜘蛛池模板: 中国xxxxxx片免费播放| 亚洲精品在线看| 亚洲国产精品免费线观看视频| 99精品网站| 麻豆XXXX乱女少妇精品-百度| 亚洲一区免费在线观看| 海量激情文学| 亚洲欧美中文字幕5发布| 国产一区二区三区四区五在线观看 | 国产精品亚洲电影久久成人影院 | 欧美大片免费观看| 99国内精品| 欧美黄色一级| seyeye高清视频在线| 前后灌满白浆护士| 超碰99热在线精品视频| 色姐妹久久综合在线av| 国产精品999| 亚洲精品高清视频| 精品伊人久久| 1300部真实小Y女视频合集| 麻豆精品人妻一区二区三区蜜桃| 2017欧美狠狠色| 欧美一级情欲片在线| 动漫女生的逼| 天堂网久久| 国内精品伊人久久久影院| 一级毛片皇帝 宫女| 李亚男三级| 成人手机在线| 亚洲精品国产熟女久久久| 久久中文字幕人妻AV熟女| G0GO人体大尺香蕉| 无码乱人伦一区二区亚洲| 精品香蕉99久久久久网站| 99国产精品欲AV蜜桃臀麻豆| 日韩精品熟女一区二区三区中文| 国产热久久精| 20岁αsrian男同志免费| 色婷婷国产精品视频一区二区三区 | 曰韩一本道高清无码av|