欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > HarmonyOS(60)性能优化之状态管理最佳实践

HarmonyOS(60)性能优化之状态管理最佳实践

2024/12/27 6:35:44 来源:https://blog.csdn.net/chunqiuwei/article/details/144103275  浏览:    关键词:HarmonyOS(60)性能优化之状态管理最佳实践

状态管理最佳实践

  • 1、避免在循环中访问状态变量
    • 1.1 反例
    • 1.2 正例
  • 2、避免不必要的状态变量的使用
  • 3、建议使用临时变量替换状态变量
    • 3.1 反例
    • 3.2 正例
  • 4、参考资料

1、避免在循环中访问状态变量

在应用开发中,应避免在循环逻辑中频繁读取状态变量,而是应该放在循环外面读取

1.1 反例

@Entry
@Component
struct Index {@State message: string = '';build() {Column() {Button('点击打印日志').onClick(() => {for (let i = 0; i < 10; i++) {//循环体中使用messagehilog.info(0x0000, 'TAG', '%{public}s', this.message);}}).width('90%').backgroundColor(Color.Blue).fontColor(Color.White).margin({top: 10})}}
}

1.2 正例

将上述代码改成如下,在for循环外部定义一个局部变量,然后在for循环内部使用该变量。

@Entry
@Component
struct Index {@State message: string = '';build() {Column() {Button('点击打印日志').onClick(() => {//循环体外提前访问message变量let logMessage: string = this.message;for (let i = 0; i < 10; i++) {hilog.info(0x0000, 'TAG', '%{public}s', logMessage);}}).width('90%').backgroundColor(Color.Blue).fontColor(Color.White).margin({top: 10})}}
}

2、避免不必要的状态变量的使用

  • 没有关联任何UI组件的状态变量不应该定义为状态变量,否则读写状态变量都会影响性能。
  • 仅有读取操作,没有修改过,没有修改过的状态变量不应该定义为状态变量,否则读状态变量会影响性能。

总之没有关联任何UI组件的状态变量和没有修改过的状态变量不应该定义为状态变量,直接使用一般变量即可,否则会影响性能。

3、建议使用临时变量替换状态变量

状态变量发生变化时,ArkUI会查询依赖该状态变量的组件并执行依赖该状态变量的组件的更新方法,完成组件渲染的行为。通过使用临时变量的计算代替直接操作状态变量,可以使ArkUI仅在最后一次状态变量变更时查询并渲染组件,减少不必要的行为,从而提高应用性能。

3.1 反例

 @State message: string = '';appendMsg(newMsg: string) {//直接操作状态变量,效率不高this.message += newMsg;this.message += ';';this.message += '<br/>';}

3.2 正例

 @State message: string = '';appendMsg(newMsg: string) {//创建一个临时变量,代替直接使用状态变量let message = this.message;message += newMsg;message += ';';message += '<br/>';this.message = message;}

4、参考资料

状态管理最佳实践
HarmonyOS(35) @State使用注意事项

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com