在HarmonyOS NEXT开发中如何关闭分屏模式?
在HarmonyOS NEXT中关闭分屏模式可通过以下两种方式实现:
一、通过代码主动关闭当前分屏:
// 在需要退出分屏的Ability中
import window from '@ohos.window';
// 获取当前窗口
let currentWindow = await window.getLastWindow(this.context);
// 退出分屏模式
try {
await currentWindow.exitSplitScreen();
} catch (error) {
console.error(`Exit split screen failed, error code: ${error.code}, message: ${error.message}`);
}
二、通过系统行为自动关闭:
当用户执行以下操作时系统会自动退出分屏:
注意事项:
需要添加权限声明(在module.json5中):
"requestPermissions": [
{
"name": "ohos.permission.MANAGE_MISSION"
}
]
分屏状态变更监听:
currentWindow.on('splitScreenStatusChange', (isSplitScreen) => {
if (!isSplitScreen) {
// 分屏已关闭后的处理逻辑
}
});
建议在UIAbility的onWindowStageDestroy生命周期中处理相关资源释放,分屏模式下的窗口管理需要特别注意生命周期变化。实际效果可能因设备屏幕尺寸和系统版本略有差异,建议配合窗口模式检测使用:
const mode = await currentWindow.getWindowMode();
if (mode === window.WindowMode.WINDOW_MODE_SPLIT_PRIMARY ||
mode === window.WindowMode.WINDOW_MODE_SPLIT_SECONDARY) {
// 当前处于分屏模式
}
在module.json5配置文件里,abilities标签下列出supportWindowMode属性中设置为[“fullscreen”, “floating”],去掉split 即可禁用分屏模式