HarmonyOS 鸿蒙系统的窗口创建方式
HarmonyOS 鸿蒙系统的窗口创建方式
请问
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#windowcreatewindow9
与
这两种方式创建的 window 有什么区别?为什么会有两种方式呢?
谢谢 🙏
更多关于HarmonyOS 鸿蒙系统的窗口创建方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
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可以视为一个应用功能的载体,而窗口则是展示这些功能界面的载体。
鸿蒙系统的窗口创建主要遵循以下步骤:
-
定义Ability:在应用的配置文件(如
config.json
)中定义Ability,包括其类型(如Page Ability表示页面)、入口类等信息。 -
实现Ability类:在代码中实现定义的Ability类,通常继承自系统提供的基类(如
PageAbility
)。 -
设置布局:在Ability类中设置布局文件,布局文件定义了窗口的界面结构,使用XML或JSON格式描述。
-
启动Ability:通过Intent或其他机制启动定义的Ability,此时系统会根据布局文件创建并显示对应的窗口。
鸿蒙系统的窗口管理还涉及到生命周期管理、事件处理等机制,这些都在Ability框架内得到统一处理。开发者无需直接操作底层窗口API,而是通过定义和实现Ability来间接管理窗口。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html