HarmonyOS 鸿蒙Next 如何在app启动时在某几个页面执行方法,且再次进入时不重复执行(app进程未结束)

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何在app启动时在某几个页面执行方法,且再次进入时不重复执行(app进程未结束)

如题:
我想在app启动的时候再某几个page里面执行一个方法,当app进程不结束的情况下,再次进入这些page的时候,就不执行这些方法了,这些page可能会进入多次

2 回复
可以使用if判断一下。

参考demo:

Index.ets
~~~arkts
import web_webview from '@ohos.web.webview'
import { router } from '@kit.ArkUI';
import { Count } from './Count'
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
  [@State](/user/State) message: string = 'Hello World';
  controller: web_webview.WebviewController = new web_webview.WebviewController();
  aboutToAppear(): void {
    // 执行一次
    if (Count.count === 0) {
      console.info('1111111111111')
      Count.count = 1
    }
  }
  build() {
    Column() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(() => {
          router.pushUrl({
            url: 'pages/Page'
          })
        })
    }
    .height('100%')
    .width('100%')
  }
}
~~~
Count.ets
~~~arkts
export class  Count{
  static   count:number = 0
}
~~~
Page.ets
~~~arkts
import { router } from '@kit.ArkUI';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Page {
  [@State](/user/State) message: string = 'Hello World';
  build() {
    RelativeContainer() {
      Text(this.message)
        .id('PageHelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(() => {
          router.pushUrl({
            url: 'pages/Index'
          })
        })
    }
    .height('100%')
    .width('100%')
  }
}
~~~ 

针对HarmonyOS 鸿蒙Next如何在app启动时在某几个页面执行方法,且再次进入时不重复执行(app进程未结束)的问题,以下提供一种解决方案:

可以在App的生命周期管理中,利用页面或组件的onCreate或onInit等初始化方法,结合全局状态管理或本地存储(如文件、数据库、SharedPreferences等)来实现。

  1. 页面或组件初始化:在目标页面的onCreate或onInit方法中编写需要执行的方法。
  2. 全局状态管理或本地存储:在执行方法后,通过全局状态管理(如状态管理工具)或本地存储记录该方法的执行状态。
  3. 状态检查:在每次进入页面或组件时,先检查全局状态管理或本地存储中的状态标记。如果标记表示已执行,则跳过方法执行;如果未执行,则执行方法并更新状态标记。

这种方法可以确保在App进程未结束的情况下,某几个页面在启动时执行方法且不重复执行。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部