0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

鴻蒙OS開發(fā):【一次開發(fā),多端部署】(資源管理器)解析

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-21 15:59 ? 次閱讀

資源管理器

介紹

本工程使用[@ohos.app.ability.common] 接口中的AbilityContext類,獲取資源管理器resourceManager,使用[@ohos.resourceManager.d.ts] 中的接口,展示了格式化字符串查詢、基于指定屏幕分辨率查詢媒體資源、獲取系統(tǒng)資源管理對象等基礎(chǔ)功能,以及展示了資源靜態(tài)overlay以及運行時overlay的特性功能。

效果預(yù)覽

image.png

使用說明

此界面為主頁面,其中展示了資源管理API各類接口的調(diào)用以及特性O(shè)verlay場景功能。其作用有:

1、點擊資源API調(diào)用示例按鈕,可跳轉(zhuǎn)到資源API示例頁面

2、點擊Overlay使用示例,可以跳轉(zhuǎn)到Overlay的使用示例界面。

開發(fā)前請熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

資源API調(diào)用示例

image.png

使用說明

此頁面展示了當(dāng)前資源管理接口的調(diào)用以及接口對應(yīng)的返回結(jié)果。

靜態(tài)overlay場景

image.png

使用說明

此頁面展示靜態(tài)overlay功能,功能使用如下:

1、靜態(tài)overlay是默認使能的,當(dāng)前顯示的是靜態(tài)overlay中的字符串和圖標。

2、點擊Disable可以觸發(fā)去使能,重啟應(yīng)用可以恢復(fù)顯示應(yīng)用的字符串和圖標。

3、點擊enable可以觸發(fā)使能,重啟應(yīng)用可以再次顯示overlay中的字符串和圖標。

源碼參考:[Overlay示例]

/*

 * Copyright (c) 2023 Huawei Device Co., Ltd.

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */



import overlay from '@ohos.bundle.overlay';

import { BusinessError } from '@ohos.base';



@Entry

@Component

struct Overlay {

  private resmgr = getContext().resourceManager;

  @State message: string = 'Test Overlay'

  @State resources: string = this.resmgr.getStringSync($r("app.string.test_string").id)

  @State pixmap: PixelMap = this.resmgr.getDrawableDescriptor($r("app.media.icon").id).getPixelMap()



  build() {

    Column() {

      Text($r('app.string.title'))

        .width('100%')

        .height(50)

        .backgroundColor($r('app.color.text_color'))

        .fontColor(Color.White)

        .fontSize(20)

        .padding({ left: 15 })



      Text(`${this.message}`)

        .fontSize(50)

        .fontWeight(FontWeight.Bold)

        .margin({

          top: 40

        })



      Button() {

        Text('disable')

          .fontSize(20)

          .fontWeight(FontWeight.Bold)

      }

      .type(ButtonType.Capsule)

      .margin({

        top: 50

      })

      .backgroundColor('#0D9FFB')

      .width('50%')

      .height('5%')

      .onClick(() = > {

        // 非使能

        overlay.setOverlayEnabled("libraryOverlay", false, (err, data) = > {

          if (err && err.code != 0) {

            console.log("error:" + JSON.stringify(err));

            this.message = this.resmgr.getStringSync($r('app.string.unEnableFailed').id);

          } else {

            console.log("data:" + JSON.stringify(data));

            this.message = this.resmgr.getStringSync($r('app.string.unEnableSuccess').id);

          }

        })

      })



      Button() {

        Text('enable')

          .fontSize(20)

          .fontWeight(FontWeight.Bold)

      }

      .type(ButtonType.Capsule)

      .margin({

        top: 20

      })

      .backgroundColor('#0D9FFB')

      .width('50%')

      .height('5%')

      .onClick(() = > {

        // 使能

        overlay.setOverlayEnabled("libraryOverlay", true, (err, data) = > {

          if (err && err.code != 0) {

            console.log("error:" + JSON.stringify(err));

            this.message = this.resmgr.getStringSync($r('app.string.enableFailed').id);

          } else {

            this.message = this.resmgr.getStringSync($r('app.string.enableSuccess').id);

          }

        })

      })



      Button() {

        Text('addResource')

          .fontSize(20)

          .fontWeight(FontWeight.Bold)

      }

      .type(ButtonType.Capsule)

      .margin({

        top: 20

      })

      .backgroundColor('#0D9FFB')

      .width('50%')

      .height('5%')

      .onClick(() = > {

        let path = getContext().bundleCodeDir + "/libraryRuntimeOverlay-default-signed.hsp";

        try {

          let ret = this.resmgr.addResource(path);

          console.error("addResource: ret" + JSON.stringify(ret));

        } catch (error) {

          let code = (error as BusinessError).code;

          let message = (error as BusinessError).message;

          console.error(`addResource failed, error code: ${code}, message: ${message}.`);

        }

        this.pixmap = this.resmgr.getDrawableDescriptor($r("app.media.icon").id).getPixelMap();

        this.resources = this.resmgr.getStringSync($r("app.string.test_string").id);

      })



      Button() {

        Text('removeResource')

          .fontSize(20)

          .fontWeight(FontWeight.Bold)

      }

      .type(ButtonType.Capsule)

      .margin({

        top: 20

      })

      .backgroundColor('#0D9FFB')

      .width('50%')

      .height('5%')

      .onClick(() = > {

        let path = getContext().bundleCodeDir + "/libraryRuntimeOverlay-default-signed.hsp";

        try {

          this.resmgr.removeResource(path);

        } catch (error) {

          let code = (error as BusinessError).code;

          let message = (error as BusinessError).message;

          console.error(`removeResource failed, error code: ${code}, message: ${message}.`);

        }

        this.pixmap = this.resmgr.getDrawableDescriptor($r("app.media.icon").id).getPixelMap();

        this.resources = this.resmgr.getStringSync($r("app.string.test_string").id);

      })



      Image(this.pixmap)

        .width(100)

        .height(100)



      Text(this.resources)

        .fontSize(50)

        .fontWeight(FontWeight.Bold)

    }

    .width('100%')

    .height('100%')

  }

}

運行時overlay場景

image.png

使用說明

此頁面展示運行時overlay功能,功能使用如下:

1、點擊addResource可以觸發(fā)運行時overlay,此時會使用運行時overlay中的資源覆蓋之前的字符串和圖標。

2、點擊removeResource可以觸發(fā)移除運行時overlay,此時會移除運行時overlay,恢復(fù)到覆蓋前的字符串和圖標。

工程目錄

entry/src/main/ets/
|---entryability
|---pages
|   |---Index.ets                     // 場景首頁
|   |---BasicResources.ets            // 基礎(chǔ)資源場景
|   |---Overlay.ets                   // overlay場景      
|---libraryOverlay                    // 靜態(tài)overlay
|---libraryRuntimeOverlay             // 運行時overlay

具體實現(xiàn)

資源API調(diào)用示例具體實現(xiàn):

1、使用getContext()接口獲取context對象,使用context.resourceManager獲取資源管理對象,然后調(diào)用resourceManager內(nèi)部的相關(guān)接口獲取對應(yīng)資源,例如:

  • 獲取字符串資源:resourceManager.getStringValue()
  • 獲取字符串?dāng)?shù)組資源:resourceManager.getStringArrayValue()
  • 獲取圖片資源:resourceManager.getMediaContent()
  • 獲取格式化字符串資源:resourceManager.getStringSync()
  • 獲取指定屏幕分辨率媒體資源:resourceManager.getMediaContentBase64()

2、導(dǎo)包resourceManager,使用resourceManager.getSystemResourceManager()獲取系統(tǒng)資源管理對象,然后獲取系統(tǒng)資源。

源碼參考:[資源API調(diào)用示例]

/*

 * Copyright (c) 2023 Huawei Device Co., Ltd.

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */



import resourceManager from '@ohos.resourceManager';

import hilog from '@ohos.hilog';

import { BusinessError } from '@ohos.base';



const TAG = '[Sample_ResourceManager]';

const DOMAIN = 0xFF00;

const SPECIFIED_NUM = 2;

let resMgr = getContext().resourceManager;



async function getString(resId: number): Promise< string | undefined > {

  try {

    let value = await resMgr.getStringValue(resId);

    return value;

  } catch (error) {

    let code = (error as BusinessError).code;

    let message = (error as BusinessError).message;

    hilog.error(DOMAIN, TAG, `getStringValue failed, error code: ${code}, message: ${message}.`);

    return;

  }

}



async function getStringArray(resource: resourceManager.Resource): Promise< Array< string > | undefined > {

  try {

    let value = await resMgr.getStringArrayValue(resource);

    return value;

  } catch (error) {

    let code = (error as BusinessError).code;

    let message = (error as BusinessError).message;

    hilog.error(DOMAIN, TAG, `getStringArrayValue failed, error code: ${code}, message: ${message}.`);

    return;

  }

}



async function getPluralString(resId: number, num: number): Promise< string | undefined > {

  try {

    let value = await resMgr.getPluralStringValue(resId, num);

    return value;

  } catch (error) {

    let code = (error as BusinessError).code;

    let message = (error as BusinessError).message;

    hilog.error(DOMAIN, TAG, `getPluralStringValue failed, error code: ${code}, message: ${message}.`);

    return;

  }

}



async function getDeviceCapability(): Promise< resourceManager.DeviceCapability | undefined > {

  try {

    let value = await resMgr.getDeviceCapability();

    return value;

  } catch (error) {

    let code = (error as BusinessError).code;

    let message = (error as BusinessError).message;

    hilog.error(DOMAIN, TAG, `getDeviceCapability failed, error code: ${code}, message: ${message}.`);

    return;

  }

}



async function getConfiguration(): Promise< resourceManager.Configuration | undefined > {

  try {

    let value = await resMgr.getConfiguration();

    return value;

  } catch (error) {

    let code = (error as BusinessError).code;

    let message = (error as BusinessError).message;

    hilog.error(DOMAIN, TAG, `getConfiguration failed, error code: ${code}, message: ${message}.`);

    return;

  }

}



async function getMedia(resId: number): Promise< Uint8Array | undefined > {

  try {

    let value = await resMgr.getMediaContent(resId);

    return value;

  } catch (error) {

    let code = (error as BusinessError).code;

    let message = (error as BusinessError).message;

    hilog.error(DOMAIN, TAG, `getMediaContent failed, error code: ${code}, message: ${message}.`);

    return;

  }

}



async function getMediaBase64(resId: number): Promise< string | undefined > {

  try {

    let value = await resMgr.getMediaContentBase64(resId);

    return value;

  } catch (error) {

    let code = (error as BusinessError).code;

    let message = (error as BusinessError).message;

    hilog.error(DOMAIN, TAG, `getMediaContentBase64 failed, error code: ${code}, message: ${message}.`);

    return;

  }

}



function getFormatString(resId: number, world: string): string | undefined {

  try {

    let value = resMgr.getStringSync(resId, world);

    return value;

  } catch (error) {

    let code = (error as BusinessError).code;

    let message = (error as BusinessError).message;

    hilog.error(DOMAIN, TAG, `getStringSync failed, error code: ${code}, message: ${message}.`);

    return;

  }

}



async function getDensityMediaBase64(resId: number, density: number): Promise< string | undefined > {

  try {

    let value = await resMgr.getMediaContentBase64(resId, density);

    return value;

  } catch (error) {

    let code = (error as BusinessError).code;

    let message = (error as BusinessError).message;

    hilog.error(DOMAIN, TAG, `getDensityMediaBase64 failed, error code: ${code}, message: ${message}.`);

    return;

  }

}



async function getSystemMediaBase64(resId: number): Promise< string | undefined > {

  // 獲取僅系統(tǒng)資源管理對象

  let sysMgr = resourceManager.getSystemResourceManager();

  try {

    let value = await sysMgr.getMediaContentBase64(resId);

    return value;

  } catch (error) {

    let code = (error as BusinessError).code;

    let message = (error as BusinessError).message;

    hilog.error(DOMAIN, TAG, `getMediaContentBase64 failed, error code: ${code}, message: ${message}.`);

    return;

  }

}



@Entry

@Component

struct Index {

  @State string_str: string = 'string'

  @State strArray: string = 'stringArray'

  @State plural: string = 'plural'

  @State configuration: string = 'configuration'

  @State capability: string = 'capability'

  @State media: string = 'media'

  @State mediaBase: string = 'mediaBase'

  @State formatStr: string = 'Format String'

  @State densityMedia: string = 'Density Media'

  @State systemRes: string = 'System Res'



  async aboutToAppear() {

    this.string_str = await getString($r('app.string.string_str').id) as string;

    let resource: resourceManager.Resource = {

      bundleName: "ohos.samples.resourcemanager",

      moduleName: "entry",

      id: $r('app.strarray.str_array').id

    }

    this.strArray = JSON.stringify(await getStringArray(resource) as Array< string >);

    this.plural = await getPluralString($r('app.plural.eat_apple').id, SPECIFIED_NUM) as string;

    this.configuration = JSON.stringify(await getConfiguration() as resourceManager.Configuration);

    this.capability = JSON.stringify(await getDeviceCapability() as resourceManager.DeviceCapability);

    this.media = JSON.stringify(((await getMedia($r('app.media.app_icon').id)) as Uint8Array).length);

    this.mediaBase = JSON.stringify(((await getMediaBase64($r('app.media.app_icon').id)) as string).length);

    this.formatStr = getFormatString($r('app.string.formatStr').id,

      await getString($r('app.string.world').id) as string) as string;

    this.densityMedia = await getDensityMediaBase64($r('app.media.density').id, 640) as string;

    this.systemRes = await getSystemMediaBase64($r('sys.media.ohos_app_icon').id) as string;

  }



  build() {

    Column() {

      Text($r('app.string.title'))

        .width('100%')

        .height(50)

        .backgroundColor($r('app.color.text_color'))

        .fontColor(Color.White)

        .fontSize(20)

        .padding({ left: 15 })

      Scroll() {

        Column() {

          Text($r('app.string.stringDesc'))

            .fontSize(25)



          Text(this.string_str)

            .fontSize(25)

            .fontColor('#ffff0000')

            .fontWeight(FontWeight.Bold)



          Text($r('app.string.stringArrayDesc'))

            .fontSize(25)



          Text(this.strArray)

            .fontSize(25)

            .fontColor('#ffff0000')

            .fontWeight(FontWeight.Bold)



          Text($r('app.string.pluralStringDesc'))

            .fontSize(25)



          Text(this.plural)

            .fontSize(25)

            .fontColor('#ffff0000')

            .fontWeight(FontWeight.Bold)



          Text($r('app.string.configurationDesc'))

            .fontSize(25)



          Text(this.configuration)

            .fontSize(25)

            .fontColor('#ffff0000')

            .fontWeight(FontWeight.Bold)



          Text($r('app.string.capabilityDesc'))

            .fontSize(25)



          Text(this.capability)

            .fontSize(25)

            .fontColor('#ffff0000')

            .fontWeight(FontWeight.Bold)



          Text($r('app.string.mediaDesc'))

            .fontSize(25)



          Text(this.media)

            .fontSize(25)

            .fontColor('#ffff0000')

            .fontWeight(FontWeight.Bold)



          Text($r('app.string.mediaBase64Desc'))

            .fontSize(25)



          Text(this.mediaBase)

            .fontSize(25)

            .fontColor('#ffff0000')

            .fontWeight(FontWeight.Bold)



          Text($r('app.string.formatStrDesc'))

            .fontSize(25)



          Text(this.formatStr)

            .fontSize(25)

            .fontColor('#ffff0000')

            .fontWeight(FontWeight.Bold)



          Text($r('app.string.densityMediaDesc'))

            .fontSize(25)



          Image(this.densityMedia)

            .id('getDensityMedia')

            .height('10%')



          Text($r('app.string.systemResDesc'))

            .fontSize(25)



          Image(this.systemRes)

            .id('getSystemMedia')

            .height('10%')

        }

        .width('100%')

        .padding(10)

        .alignItems(HorizontalAlign.Start)

      }

    }

    .width('100%')

    .height('100%')

  }

}

overlay場景的具體實現(xiàn):

1、靜態(tài)overlay主要是通過加載overly中的資源實現(xiàn)資源覆蓋,需要在對應(yīng)的module.json中添加"targetModuleName":"entry", 表示覆蓋entry中的資源,默認使能,也可調(diào)用包管理接口進行使能和去使能。

使用步驟為:在安裝完entry的hap后,需要把library模塊生成的library-default-signed.hsp推送到/data/test下,使用bm install命令進行安裝。

腳本語言如下:

hdc_std shell mount -o remount,rw /

hdc_std install ./entry-default-signed.hap

hdc_std shell mkdir /data/test

hdc_std file send ./libraryOverlay-default-signed.hsp /data/test

hdc_std shell bm install -p "/data/test/libraryOverlay-default-signed.hsp"

pause

2、運行時overlay資源加載,主要是在應(yīng)用運行過程中實現(xiàn)資源的覆蓋,需要應(yīng)用主動調(diào)用資源的addResource接口實現(xiàn)資源的覆蓋以及資源的移除,此功能不持久化。

使用步驟為: 在安裝完entry的hap后,需要把libraryRuntimeOverlay模塊生成的libraryRuntimeOverlay-default-signed.hsp推送到應(yīng)用對應(yīng)的安裝目錄下。

腳本語言如下:

hdc_std shell mount -o remount,rw /

hdc_std install ./entry-default-signed.hap

hdc_std file send ./libraryRuntimeOverlay-default-signed.hsp /data/app/el1/bundle/public/ohos.samples.resourcemanager

pause

HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

搜狗高速瀏覽器截圖20240326151450.png

源碼參考:[Overlay示例]

/*

 * Copyright (c) 2023 Huawei Device Co., Ltd.

 * Licensed under the Apache License, Version 2.0 (the "License");

 * you may not use this file except in compliance with the License.

 * You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */



import overlay from '@ohos.bundle.overlay';

import { BusinessError } from '@ohos.base';



@Entry

@Component

struct Overlay {

  private resmgr = getContext().resourceManager;

  @State message: string = 'Test Overlay'

  @State resources: string = this.resmgr.getStringSync($r("app.string.test_string").id)

  @State pixmap: PixelMap = this.resmgr.getDrawableDescriptor($r("app.media.icon").id).getPixelMap()



  build() {

    Column() {

      Text($r('app.string.title'))

        .width('100%')

        .height(50)

        .backgroundColor($r('app.color.text_color'))

        .fontColor(Color.White)

        .fontSize(20)

        .padding({ left: 15 })



      Text(`${this.message}`)

        .fontSize(50)

        .fontWeight(FontWeight.Bold)

        .margin({

          top: 40

        })



      Button() {

        Text('disable')

          .fontSize(20)

          .fontWeight(FontWeight.Bold)

      }

      .type(ButtonType.Capsule)

      .margin({

        top: 50

      })

      .backgroundColor('#0D9FFB')

      .width('50%')

      .height('5%')

      .onClick(() = > {

        // 非使能

        overlay.setOverlayEnabled("libraryOverlay", false, (err, data) = > {

          if (err && err.code != 0) {

            console.log("error:" + JSON.stringify(err));

            this.message = this.resmgr.getStringSync($r('app.string.unEnableFailed').id);

          } else {

            console.log("data:" + JSON.stringify(data));

            this.message = this.resmgr.getStringSync($r('app.string.unEnableSuccess').id);

          }

        })

      })



      Button() {

        Text('enable')

          .fontSize(20)

          .fontWeight(FontWeight.Bold)

      }

      .type(ButtonType.Capsule)

      .margin({

        top: 20

      })

      .backgroundColor('#0D9FFB')

      .width('50%')

      .height('5%')

      .onClick(() = > {

        // 使能

        overlay.setOverlayEnabled("libraryOverlay", true, (err, data) = > {

          if (err && err.code != 0) {

            console.log("error:" + JSON.stringify(err));

            this.message = this.resmgr.getStringSync($r('app.string.enableFailed').id);

          } else {

            this.message = this.resmgr.getStringSync($r('app.string.enableSuccess').id);

          }

        })

      })



      Button() {

        Text('addResource')

          .fontSize(20)

          .fontWeight(FontWeight.Bold)

      }

      .type(ButtonType.Capsule)

      .margin({

        top: 20

      })

      .backgroundColor('#0D9FFB')

      .width('50%')

      .height('5%')

      .onClick(() = > {

        let path = getContext().bundleCodeDir + "/libraryRuntimeOverlay-default-signed.hsp";

        try {

          let ret = this.resmgr.addResource(path);

          console.error("addResource: ret" + JSON.stringify(ret));

        } catch (error) {

          let code = (error as BusinessError).code;

          let message = (error as BusinessError).message;

          console.error(`addResource failed, error code: ${code}, message: ${message}.`);

        }

        this.pixmap = this.resmgr.getDrawableDescriptor($r("app.media.icon").id).getPixelMap();

        this.resources = this.resmgr.getStringSync($r("app.string.test_string").id);

      })



      Button() {

        Text('removeResource')

          .fontSize(20)

          .fontWeight(FontWeight.Bold)

      }

      .type(ButtonType.Capsule)

      .margin({

        top: 20

      })

      .backgroundColor('#0D9FFB')

      .width('50%')

      .height('5%')

      .onClick(() = > {

        let path = getContext().bundleCodeDir + "/libraryRuntimeOverlay-default-signed.hsp";

        try {

          this.resmgr.removeResource(path);

        } catch (error) {

          let code = (error as BusinessError).code;

          let message = (error as BusinessError).message;

          console.error(`removeResource failed, error code: ${code}, message: ${message}.`);

        }

        this.pixmap = this.resmgr.getDrawableDescriptor($r("app.media.icon").id).getPixelMap();

        this.resources = this.resmgr.getStringSync($r("app.string.test_string").id);

      })



      Image(this.pixmap)

        .width(100)

        .height(100)



      Text(this.resources)

        .fontSize(50)

        .fontWeight(FontWeight.Bold)

    }

    .width('100%')

    .height('100%')

  }

}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    56

    文章

    2267

    瀏覽量

    42481
  • 鴻蒙OS
    +關(guān)注

    關(guān)注

    0

    文章

    188

    瀏覽量

    4336
收藏 人收藏

    評論

    相關(guān)推薦

    淺談數(shù)據(jù)庫內(nèi)存和CPU資源控制及資源管理器的應(yīng)用

    數(shù)據(jù)庫系統(tǒng)的資源是指內(nèi)存和CPU(處理資源,擁有資源的多寡,決定了數(shù)據(jù)查詢的性能。當(dāng)個SQL Server實例上,擁有多個獨立的工作負
    的頭像 發(fā)表于 10-29 12:12 ?2677次閱讀
    淺談數(shù)據(jù)庫內(nèi)存和CPU<b class='flag-5'>資源</b>控制及<b class='flag-5'>資源管理器</b>的應(yīng)用

    鴻蒙OS開發(fā):【一次開發(fā)多端部署】(多天氣)項目

    本示例展示個天氣應(yīng)用界面,包括首頁、城市管理、添加城市、更新時間彈窗,體現(xiàn)一次開發(fā),多端部署
    的頭像 發(fā)表于 05-20 14:59 ?687次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(<b class='flag-5'>一</b>多天氣)項目

    鴻蒙OS開發(fā):【一次開發(fā),多端部署】(音樂專輯頁面)

    基于自適應(yīng)和響應(yīng)式布局,實現(xiàn)一次開發(fā)、多端部署音樂專輯頁面。
    的頭像 發(fā)表于 05-25 16:21 ?517次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(音樂專輯頁面)

    鴻蒙OS開發(fā):【一次開發(fā),多端部署】(視頻應(yīng)用)

    者提供了“一次開發(fā),多端部署”的系統(tǒng)能力,讓開發(fā)者可以基于一次
    的頭像 發(fā)表于 05-25 16:29 ?4209次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(視頻應(yīng)用)

    鴻蒙OS開發(fā):典型頁面場景【一次開發(fā),多端部署】實戰(zhàn)(設(shè)置典型頁面)

    本示例展示了設(shè)置應(yīng)用的典型頁面,其在小窗口和大窗口有不同的顯示效果,體現(xiàn)一次開發(fā)、多端部署的能力。
    的頭像 發(fā)表于 05-27 09:36 ?895次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:典型頁面場景【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】實戰(zhàn)(設(shè)置典型頁面)

    LabVIEW 工程資源管理器

    ,LabVIEW 增加了個工程資源管理器功能。LabVIEW 工程資源管理器就是個可以方便查看、調(diào)整程序系統(tǒng)結(jié)構(gòu)的工作區(qū)。與 VC, VB 等語言中的 project, works
    發(fā)表于 01-05 16:51

    windows7開機提示“資源管理器已停止工作”

    windows7開機提示“資源管理器已停止工作”的解決方法分享給大家,據(jù)些用戶反映,在使用Win7系統(tǒng)的時候會出現(xiàn)這樣的情況,每次開機都提示“資源管理器已停止工作”如下圖所示: 原因分析: 這是
    發(fā)表于 05-19 16:58

    請問資源管理器的cubemxsettings怎么調(diào)出來

    請問下,資源管理器的cubemxsettings怎么調(diào)出來
    發(fā)表于 10-12 10:22

    DevEco Device Tool 3.1 Release新版本發(fā)布,新增資源管理器、SFTP、HDC

    的特性介紹,歡迎大家升級體驗! 升級方式:建議您從官網(wǎng)下載安裝包進行全量升級 https://device.harmonyos.com/cn/ide#download 、新增資源管理器 設(shè)備開發(fā)主要
    發(fā)表于 04-07 10:19

    Delphi教程_新穎的資源管理器界面

    Delphi教程新穎的資源管理器界面,很好的Delphi資料,快來下載學(xué)習(xí)吧。
    發(fā)表于 03-16 14:49 ?10次下載

    微軟欲改善Windows 10文件資源管理器體驗

    根據(jù)份新的職位清單,微軟希望提供更現(xiàn)代的File Explorer(文件資源管理器)體驗。
    的頭像 發(fā)表于 02-26 14:26 ?1800次閱讀
    微軟欲改善Windows 10文件<b class='flag-5'>資源管理器</b>體驗

    YARN資源管理器的容錯和架構(gòu)概述

    Apache Hadoop YARN (Yet Another Resource Negotiator,另資源協(xié)調(diào)者)是種新的 Hadoop 資源管理器,它是
    發(fā)表于 04-22 08:00 ?0次下載
    YARN<b class='flag-5'>資源管理器</b>的容錯和架構(gòu)概述

    Win10可選更新:修復(fù)資源管理器崩潰

    據(jù)外媒 WindowsLatest,微軟最近為 Windows 10 發(fā)布了 KB4586819 可選更新,修復(fù)了文件資源管理器崩潰,游戲和 USB 等多個問題。 此更新補丁附帶了很長的 bug
    的頭像 發(fā)表于 11-23 11:01 ?1689次閱讀

    鴻蒙OS開發(fā):【一次開發(fā),多端部署】(多設(shè)備自適應(yīng)能力)簡單介紹

    本示例是《一次開發(fā),多端部署》的配套示例代碼,展示了[頁面開發(fā)多能力],包括自適應(yīng)布局、響應(yīng)
    的頭像 發(fā)表于 05-21 14:59 ?1925次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】(多設(shè)備自適應(yīng)能力)簡單介紹

    鴻蒙OS開發(fā):【一次開發(fā)多端部署】( 設(shè)置app頁面)

    本示例展示了設(shè)置應(yīng)用的典型頁面,其在小窗口和大窗口有不同的顯示效果,體現(xiàn)一次開發(fā)、多端部署的能力。
    的頭像 發(fā)表于 05-21 14:56 ?689次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>一次</b><b class='flag-5'>開發(fā)</b>,<b class='flag-5'>多端</b><b class='flag-5'>部署</b>】( 設(shè)置app頁面)