把網(wǎng)站傳到服務(wù)器上怎么做新媒體運營
概述
當用戶打開、切換和返回到對應(yīng)應(yīng)用時,應(yīng)用中的UIAbility實例會在其生命周期的不同狀態(tài)之間轉(zhuǎn)換。UIAbility類提供了一系列回調(diào),通過這些回調(diào)可以知道當前UIAbility實例的某個狀態(tài)發(fā)生改變,會經(jīng)過UIAbility實例的創(chuàng)建和銷毀,或者UIAbility實例發(fā)生了前后臺的狀態(tài)切換。
UIAbility的生命周期包括Create、Foreground、Background、Destroy四個狀態(tài),如下圖所示。
圖1?UIAbility生命周期狀態(tài)
生命周期狀態(tài)說明
Create狀態(tài)
Create狀態(tài)為在應(yīng)用加載過程中,UIAbility實例創(chuàng)建完成時觸發(fā),系統(tǒng)會調(diào)用onCreate()回調(diào)??梢栽谠摶卣{(diào)中進行應(yīng)用初始化操作,例如變量定義資源加載等,用于后續(xù)的UI展示。
import UIAbility from '@ohos.app.ability.UIAbility';
import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import Want from '@ohos.app.ability.Want';export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {// 應(yīng)用初始化}// ...
}
說明:
Want是對象間信息傳遞的載體,可以用于應(yīng)用組件間的信息傳遞。
WindowStageCreate和WindowStageDestroy狀態(tài)
UIAbility實例創(chuàng)建完成之后,在進入Foreground之前,系統(tǒng)會創(chuàng)建一個WindowStage。WindowStage創(chuàng)建完成后會進入onWindowStageCreate()回調(diào),可以在該回調(diào)中設(shè)置UI加載、設(shè)置WindowStage的事件訂閱。
圖2?WindowStageCreate和WindowStageDestroy狀態(tài)
在onWindowStageCreate()回調(diào)中通過loadContent()方法設(shè)置應(yīng)用要加載的頁面,并根據(jù)需要調(diào)用on(‘windowStageEvent’)方法訂閱WindowStage的事件(獲焦/失焦、可見/不可見)。
import UIAbility from '@ohos.app.ability.UIAbility';
import window from '@ohos.window';export default class EntryAbility extends UIAbility {// ...onWindowStageCreate(windowStage: window.WindowStage) {// 設(shè)置WindowStage的事件訂閱(獲焦/失焦、可見/不可見)try {windowStage.on('windowStageEvent', (data) => {let stageEventType: window.WindowStageEventType = data;switch (stageEventType) {case window.WindowStageEventType.SHOWN: // 切到前臺console.info('windowStage foreground.');break;case window.WindowStageEventType.ACTIVE: // 獲焦狀態(tài)console.info('windowStage active.');break;case window.WindowStageEventType.INACTIVE: // 失焦狀態(tài)console.info('windowStage inactive.');break;case window.WindowStageEventType.HIDDEN: // 切到后臺console.info('windowStage background.');break;default:break;}});} catch (exception) {console.error('Failed to enable the listener for window stage event changes. Cause:' +JSON.stringify(exception));}// 設(shè)置UI加載windowStage.loadContent('pages/Index', (err, data) => {// ...});}
}
對應(yīng)于onWindowStageCreate()回調(diào)。在UIAbility實例銷毀之前,則會先進入onWindowStageDestroy()回調(diào),可以在該回調(diào)中釋放UI資源。例如在onWindowStageDestroy()中注銷獲焦/失焦等WindowStage事件。
import UIAbility from '@ohos.app.ability.UIAbility';
import window from '@ohos.window';
import { BusinessError } from '@ohos.base';export default class EntryAbility extends UIAbility {windowStage: window.WindowStage | undefined = undefined;// ...onWindowStageCreate(windowStage: window.WindowStage) {this.windowStage = windowStage;// ...}onWindowStageDestroy() {// 釋放UI資源// 例如在onWindowStageDestroy()中注銷獲焦/失焦等WindowStage事件try {if (this.windowStage) {this.windowStage.off('windowStageEvent');}} catch (err) {let code = (err as BusinessError).code;let message = (err as BusinessError).message;console.error(`Failed to disable the listener for windowStageEvent. Code is ${code}, message is ${message}`);};}
}
Foreground和Background狀態(tài)
Foreground和Background狀態(tài)分別在UIAbility實例切換至前臺和切換至后臺時觸發(fā),對應(yīng)于onForeground()回調(diào)和onBackground()回調(diào)。
onForeground()回調(diào),在UIAbility的UI可見之前,如UIAbility切換至前臺時觸發(fā)??梢栽趏nForeground()回調(diào)中申請系統(tǒng)需要的資源,或者重新申請在onBackground()中釋放的資源。
onBackground()回調(diào),在UIAbility的UI完全不可見之后,如UIAbility切換至后臺時候觸發(fā)??梢栽趏nBackground()回調(diào)中釋放UI不可見時無用的資源,或者在此回調(diào)中執(zhí)行較為耗時的操作,例如狀態(tài)保存等。
例如應(yīng)用在使用過程中需要使用用戶定位時,假設(shè)應(yīng)用已獲得用戶的定位權(quán)限授權(quán)。在UI顯示之前,可以在onForeground()回調(diào)中開啟定位功能,從而獲取到當前的位置信息。
當應(yīng)用切換到后臺狀態(tài),可以在onBackground()回調(diào)中停止定位功能,以節(jié)省系統(tǒng)的資源消耗。
import UIAbility from '@ohos.app.ability.UIAbility';export default class EntryAbility extends UIAbility {// ...onForeground() {// 申請系統(tǒng)需要的資源,或者重新申請在onBackground()中釋放的資源}onBackground() {// 釋放UI不可見時無用的資源,或者在此回調(diào)中執(zhí)行較為耗時的操作// 例如狀態(tài)保存等}
}
Destroy狀態(tài)
Destroy狀態(tài)在UIAbility實例銷毀時觸發(fā)??梢栽趏nDestroy()回調(diào)中進行系統(tǒng)資源的釋放、數(shù)據(jù)的保存等操作。
例如調(diào)用terminateSelf()方法停止當前UIAbility實例,從而完成UIAbility實例的銷毀;或者用戶使用最近任務(wù)列表關(guān)閉該UIAbility實例,完成UIAbility的銷毀。
import UIAbility from '@ohos.app.ability.UIAbility';export default class EntryAbility extends UIAbility {// ...onDestroy() {// 系統(tǒng)資源的釋放、數(shù)據(jù)的保存等}
}
要想成為一名合格的鴻蒙高級開發(fā)工程師,以上知識點是必須要掌握的,除此之外,還需要掌握一些鴻蒙應(yīng)用開發(fā)相關(guān)的一些技術(shù)
為了節(jié)省大家一些查找的時間,這邊聯(lián)合幾位行業(yè)大佬,為大家準備了一份《鴻蒙全棧技術(shù) 實戰(zhàn)項目驅(qū)動式教學》的學習導(dǎo)圖,從入門到進階再到南北向開發(fā)實戰(zhàn)的一整套完整體系,想要學習了解更多鴻蒙開發(fā)的相關(guān)知識可以借鑒:《鴻蒙4.0源碼開發(fā)架構(gòu)分析pdf》
除了上面整理的思維導(dǎo)圖以外,這里還特別整理的一份《鴻蒙 (Harmony OS)開發(fā)學習手冊》給大家進行參考學習:
一、入門必看
1.應(yīng)用開發(fā)導(dǎo)讀(ArkTS)
2.……
二、HarmonyOS 概念
1.系統(tǒng)定義
2.技術(shù)架構(gòu)
3.技術(shù)特性
4.系統(tǒng)安全
5…
三、如何快速入門?《一小時快速認識HarmonyOS》
1.基本概念
2.構(gòu)建第一個ArkTS應(yīng)用
3.構(gòu)建第一個JS應(yīng)用
4.……
四、開發(fā)基礎(chǔ)知識
1.應(yīng)用基礎(chǔ)知識
2.配置文件
3.應(yīng)用數(shù)據(jù)管理
4.應(yīng)用安全管理
5.應(yīng)用隱私保護
6.三方應(yīng)用調(diào)用管控機制
7.資源分類與訪問
8.學習ArkTS語言
9.……
五、基于ArkTS 開發(fā)
1.Ability開發(fā)
2.UI開發(fā)
3.公共事件與通知
4.窗口管理
5.媒體
6.安全
7.網(wǎng)絡(luò)與鏈接
8.電話服務(wù)
9.數(shù)據(jù)管理
10.后臺任務(wù)(Background Task)管理
11.設(shè)備管理
12.設(shè)備使用信息統(tǒng)計
13.DFX
14.國際化開發(fā)
15.折疊屏系列
16.……
更多了解更多鴻蒙開發(fā)的相關(guān)知識可以參考:《鴻蒙HarmonyOS分布式項目實戰(zhàn)》