HarmonyOS 鸿蒙系统的窗口创建方式

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

HarmonyOS 鸿蒙系统的窗口创建方式 请问
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#windowcreatewindow9

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#createsubwindow9

这两种方式创建的 window 有什么区别?为什么会有两种方式呢?

谢谢 🙏


更多关于HarmonyOS 鸿蒙系统的窗口创建方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

window.createWindow是通过window对象创建的窗口。

windowStage.createSubWindow是通过windowStage创建的窗口。

window对象可以在UIAbility中的任何位置调用。

windowStage对象只在onWindowStageCreate中获取,在任意位置创建时需要使用AppStorage进行存取。

SubWindow为子窗口,可以用于辅助主窗口进行部分功能操作。

createWindow目前可以使用的类型为Dialog,只能响应点击事件,大多用于活动展示。

更多关于HarmonyOS 鸿蒙系统的窗口创建方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


window.getLastWindow方法能否获取到window.createWindow是通过window对象创建的窗口?

一个是创建窗口,一个是创建子窗口。通常一个应用被启动之后。鸿蒙系统会为该应用创建一个主窗口。主窗口被创建之后,该应用的所有路由页面都会被绘制在该窗口上。 这也就是我们的项目工程里面为什么总是会有这段代码的原因。

onWindowStageCreate(windowStage: window.WindowStage): void {
  // Main window is created, set main page for this ability
  hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

  windowStage.loadContent('pages/Index', (err) => {
    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.');
  });
}

HarmonyOS(鸿蒙系统)的窗口创建方式主要通过其特有的Ability框架来实现,这与传统的窗口管理机制有所不同。在鸿蒙系统中,窗口通常与Ability(能力)相关联,每个Ability可以视为一个应用功能的载体,而窗口则是展示这些功能界面的载体。

鸿蒙系统的窗口创建主要遵循以下步骤:

  1. 定义Ability:在应用的配置文件(如config.json)中定义Ability,包括其类型(如Page Ability表示页面)、入口类等信息。

  2. 实现Ability类:在代码中实现定义的Ability类,通常继承自系统提供的基类(如PageAbility)。

  3. 设置布局:在Ability类中设置布局文件,布局文件定义了窗口的界面结构,使用XML或JSON格式描述。

  4. 启动Ability:通过Intent或其他机制启动定义的Ability,此时系统会根据布局文件创建并显示对应的窗口。

鸿蒙系统的窗口管理还涉及到生命周期管理、事件处理等机制,这些都在Ability框架内得到统一处理。开发者无需直接操作底层窗口API,而是通过定义和实现Ability来间接管理窗口。

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

回到顶部