当前位置: 首页 > news >正文

做手机网站版面做多宽长春网络安全公司

做手机网站版面做多宽,长春网络安全公司,网站运维托管,电子商务网站建设人才1. UIAbility组件生命周期 UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态。 UIAbility生命周期状态 1.1 Create状态 Create状态为在应用加载过程中#xff0c;UIAbility实例创建完成时触发#xff0c;系统会调用onCreate()回调。可以在该回调中…1. UIAbility组件生命周期 UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态。 UIAbility生命周期状态 1.1 Create状态 Create状态为在应用加载过程中UIAbility实例创建完成时触发系统会调用onCreate()回调。可以在该回调中进行页面初始化操作例如变量定义资源加载等用于后续的UI界面展示。 import UIAbility from ohos.app.ability.UIAbility; import Window from ohos.window;export default class EntryAbility extends UIAbility {onCreate(want, launchParam) {// 页面初始化}// ... } 1.2 WindowStageCreate和WindowStageDestroy状态 UIAbility实例创建完成之后在进入Foreground之前系统会创建一个WindowStage。WindowStage创建完成后会进入onWindowStageCreate()回调可以在该回调中设置UI界面加载、设置WindowStage的事件订阅。 在onWindowStageCreate()回调中通过loadContent()方法设置应用要加载的页面并根据需要订阅WindowStage的事件获焦/失焦、可见/不可见。 import UIAbility from ohos.app.ability.UIAbility; import Window from ohos.window;export default class EntryAbility extends UIAbility {onWindowStageCreate(windowStage: Window.WindowStage) {// 设置WindowStage的事件订阅获焦/失焦、可见/不可见// 设置UI界面加载windowStage.loadContent(pages/Index, (err, data) {// ...});} } 在UIAbility实例销毁之前会进入onWindowStageDestroy()回调可以释放UI界面资源。 import UIAbility from ohos.app.ability.UIAbility; import Window from ohos.window;export default class EntryAbility extends UIAbility {// ...onWindowStageDestroy() {// 释放UI界面资源} } onCreate在 Ability 创建时被调用用于执行初始化和设置业务逻辑。onDestroy在 Ability 销毁时触发用于执行资源清理和其他清理操作。onWindowStageCreate在 WindowStage 创建完成后触发。onWindowStageDestroy在 WindowStage 销毁后触发。onForegroundAbility 的生命周期回调当应用从后台切换到前台时调用。onBackgroundAbility 的生命周期回调当应用从前台切换到后台时调用。 2. 页面和自定义组件生命周期 2.1 页面生命周期 即被Entry装饰的组件生命周期提供以下生命周期接口 onPageShow页面每次显示时触发一次包括路由过程、应用进入前台等场景。onPageHide页面每次隐藏时触发一次包括路由过程、应用进入后台等场景。onBackPress当用户点击返回按钮时触发。 2.2 组件生命周期 即一般用Component装饰的自定义组件的生命周期提供以下生命周期接口 aboutToAppear组件即将出现时回调该接口具体时机为在创建自定义组件的新实例后在执行其build()函数之前执行。aboutToDisappear在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量特别是Link变量的修改可能会导致应用程序行为不稳定。 2.3 生命周期流程 下图展示的是被Entry装饰的组件页面生命周期。 2.4 自定义组件的渲染流程 ArkUI框架创建自定义组件初始化自定义组件的成员变量执行aboutToAppear方法执行build方法渲染组件在首次渲染时框架会记录状态变量和组件的映射关系当状态变量的值更改时框架根据映射关系执行这些UI组件的更新函数if分支或者ForEach渲染的数组个数改变组件将被删除在删除前执行aboutToDisappear 不建议在aboutToDisappear内使用async await如果在aboutToDisappear使用中Promise或者回调方法自定义组件将被保留在Promise的闭包中直到回调方法被执行完这个行为阻止了自定义组件的垃圾回收。 2.5 示例 import router from ohos.routerEntry Component struct Index {State showChild: boolean true;// 页面生命周期onPageShow() {console.info(Index onPageShow);}// 页面生命周期onPageHide() {console.info(Index onPageHide);}// 页面生命周期onBackPress() {console.info(Index onBackPress);}// 组件生命周期aboutToAppear() {console.info(Index aboutToAppear);}// 组件生命周期aboutToDisappear() {console.info(Index aboutToDisappear);}build() {Column() {// this.showChild为true创建Child子组件执行Child aboutToAppearif (this.showChild) {Child()}// this.showChild为false删除Child子组件执行Child aboutToDisappearButton(删除子组件 Child).margin({ bottom: 20 }).onClick(() {this.showChild false;})// push到DetailPage页面执行onPageHideButton(跳转到 DetailPage).onClick(() {router.pushUrl({ url: pages/DetailPage });})}.width(100%).height(100%)} }Component struct Child {State title: string Child;// 组件生命周期aboutToAppear() {console.info(Child aboutToAppear)}// 组件生命周期aboutToDisappear() {console.info(Child aboutToDisappear)}build() {Text(this.title).fontSize(50).onClick(() {this.title Child Click;})} } 3. 同模块下的UIAbility跳转 3.1 创建 PaymentPage Entry Component struct PaymentPage {State message: string payment pagebuild() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width(100%)}.height(100%)} } 3.2 创建 PaymentAbility 修改 windowStage.loadContent 加载的页面 3.3 修改 Index.ets import common from ohos.app.ability.common import Want from ohos.app.ability.WantEntry Component struct Index {State message: string index pagebuild() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Button(去支付).width(100%).onClick(() {const context getContext(this) as common.UIAbilityContext;const want: Want {deviceId: , // deviceId为空表示本设备bundleName: com.example.myapplication,abilityName: PaymentAbility,moduleName: entry}context.startAbility(want)})}.width(100%)}.height(100%)} } 4. 不同模块下的UIAbility跳转 4.1 创建模块 4.2 修改 paymentModule 模块的 Index.ets Entry Component struct Index {State message: string payment module pagebuild() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width(100%)}.height(100%)} } 4.3 修改 entry 模块的 Index.ets 修改 abilityName 和 moduleName import common from ohos.app.ability.common import Want from ohos.app.ability.WantEntry Component struct Index {State message: string index pagebuild() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Button(去支付).width(100%).onClick(() {const context getContext(this) as common.UIAbilityContext;const want: Want {deviceId: , // deviceId为空表示本设备bundleName: com.example.myapplication,abilityName: PaymentModuleAbility,moduleName: paymentModule}context.startAbility(want)})}.width(100%)}.height(100%)} } 4.4 配置调起2个模块 4.5 两个模块之间传递数据 4.5.1 修改 entry 模块的 Index.ets 使用 parameters 选项添加自定义数据 使用 context.startAbilityForResult 方法启动 UIAbility 并获取返回结果 import common from ohos.app.ability.common import Want from ohos.app.ability.Wanttype PaymentAbilityParams Recordstring, booleanEntry Component struct Index {State message: string index pagebuild() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Button(去支付).width(100%).onClick(async () {const context getContext(this) as common.UIAbilityContext;const want: Want {deviceId: , // deviceId为空表示本设备bundleName: com.example.myapplication,abilityName: PaymentModuleAbility,moduleName: paymentModule,parameters: {orderId: Date.now()}}// context.startAbility(want)const paymentAbilityResult await context.startAbilityForResult(want)const params paymentAbilityResult.want?.parameters as PaymentAbilityParamsif (params?.isPay) {AlertDialog.show({message: 支付成功})} else {AlertDialog.show({message: 支付失败})}})}.width(100%)}.height(100%)} } 4.5.2 修改 paymentModule 模块的 PaymentModuleAbility 在 UIAbility 的 onCreate 中接收参数并保存到 AppStorage 中 import UIAbility from ohos.app.ability.UIAbility; import hilog from ohos.hilog; import window from ohos.window;type AbilityParams Recordstring, numberexport default class PaymentModuleAbility extends UIAbility {onCreate(want, launchParam) {const params want.parameters as AbilityParams;AppStorage.SetOrCreatenumber(orderId, params.orderId);hilog.info(0x0000, testTag, %{public}s, Ability onCreate);}onDestroy() {hilog.info(0x0000, testTag, %{public}s, Ability onDestroy);}onWindowStageCreate(windowStage: window.WindowStage) {// Main window is created, set main page for this abilityhilog.info(0x0000, testTag, %{public}s, Ability onWindowStageCreate);windowStage.loadContent(pages/Index, (err, data) {if (err.code) {hilog.error(0x0000, testTag, Failed to load the content. Cause: %{public}s, JSON.stringify(err) ?? );return;}hilog.info(0x0000, testTag, Succeeded in loading the content. Data: %{public}s, JSON.stringify(data) ?? );});}onWindowStageDestroy() {// Main window is destroyed, release UI related resourceshilog.info(0x0000, testTag, %{public}s, Ability onWindowStageDestroy);}onForeground() {// Ability has brought to foregroundhilog.info(0x0000, testTag, %{public}s, Ability onForeground);}onBackground() {// Ability has back to backgroundhilog.info(0x0000, testTag, %{public}s, Ability onBackground);} }4.5.3 修改 paymentModule 模块的 Index.ets 从 storage 中获取 orderId 点击支付按钮 PaymentModuleAbility 停止自身并返回结果 import common from ohos.app.ability.commonEntry Component struct Index {State message: string payment module pageStorageProp(orderId) orderId: number 0build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Text(${this.orderId}).fontSize(50).fontColor(Color.Red)Button(支付).onClick(() {const context getContext(this) as common.UIAbilityContext;context.terminateSelfWithResult({resultCode: 1,want: {deviceId: , // deviceId为空表示本设备bundleName: com.example.myapplications,abilityName: EntryAbility,moduleName: entry,parameters: {isPay: true}}})})}.width(100%)}.height(100%)} }
http://www.pierceye.com/news/203166/

相关文章:

  • 宁河做网站公司wordpress漏洞扫描工具
  • 单位网站建设的目的手机可以做网站服务器吗
  • 上海网站建设有限公司lnmp安装wordpress限权
  • 大航母网站建设服务php一般网站空间多大
  • 中性衣服印花图案设计网站做网站的工作
  • 只做女性的网站编程入门先学什么软件
  • 创客网站建设新余公司做网站
  • 买个网站域名多少钱网站建设 内容缺乏
  • 清河做网站哪里好建设一个网站的文案需要
  • 农机网站模版建网站用什么工作站
  • 网站可以做无形资产游戏代理0加盟费
  • 高端网站建设哪家公司好城乡建设部网站甘红刚
  • 湖北省建设部网站网站排名seo教程
  • 郑州 高端网站建设网络结构有哪几种
  • 电脑做apk的网站h5工商网站如何做实名
  • 循化网站建设公司c语言开发工具
  • wordpress网站做app关于网站的ppt怎么做
  • 怎么建设商品网站项目计划书范文
  • 大足建网站的网页微信版官方下载
  • 企业网站免费建设做网站设计需求
  • 做电影网站用什么虚拟主机建设网站模块需要哪些内容
  • 基于asp.net网站开发优化企业网站
  • 做网站有了空间在备案吗网站建设实务课本
  • 个人站长和企业网站wordpress主键外键
  • 关于对网站建设情况的通报东南亚跨境电商有哪些平台
  • 如需郑州网站建设长沙微网站制作
  • html格式网站网站搜索排名优化软件
  • 定制 网站天津做网站要多少钱
  • 免费做问卷的网站网站建设 好发信息网
  • 网站职能建设论文网页跳转链接怎么制作