跳转至

窗口状态持久化

概述

窗口状态持久化可让您的 Electron 应用程序在应用程序重启后自动保存并恢复窗口的位置、大小和显示模式(例如最大化或全屏状态)。

此功能对于用户经常调整、移动或最大化窗口,并期望重新打开应用时窗口保持相同状态的应用程序尤其有用。

用法

基本用法

要启用窗口状态持久化,请在窗口构造函数选项中设置 windowStatePersistence: true,并为窗口提供一个唯一的 name。

const { app, BrowserWindow } = require('electron')

function createWindow () {
  const win = new BrowserWindow({
    name: 'main-window',
    width: 800,
    height: 600,
    windowStatePersistence: true
  })

  win.loadFile('index.html')
}

app.whenReady().then(createWindow)

在此配置下,Electron 将自动:

  1. 在创建窗口时恢复窗口的位置、大小和显示模式(如果存在之前的状态)
  2. 每当窗口状态(位置、大小或显示模式)发生变化时保存窗口状态。
  3. 在成功恢复状态后发出 persisted-state-restored 事件。
  4. 自动将恢复的窗口状态适配多显示器设置和显示变化。

[!NOTE] 窗口状态持久化要求窗口在其构造函数选项中设置了唯一的 name 属性。此名称用作存储和检索窗口已保存状态的标识符。

选择性持久化

您可以通过传入包含特定选项的对象来控制窗口状态的哪些方面会被持久化:

const { app, BrowserWindow } = require('electron')

function createWindow () {
  const win = new BrowserWindow({
    name: 'main-window',
    width: 800,
    height: 600,
    windowStatePersistence: {
      bounds: true, // Save position and size (default: true)
      displayMode: false // Don't save maximized/fullscreen/kiosk state (default: true)
    }
  })

  win.loadFile('index.html')
}

app.whenReady().then(createWindow)

在此示例中,窗口会记住其位置和大小,但即使上次关闭时处于最大化或全屏状态,也始终以普通模式启动。

清除已持久化的状态

您可以使用静态 clearPersistedState 方法以编程方式清除特定窗口保存的状态:

const { BrowserWindow } = require('electron')

// Clear saved state for a specific window
BrowserWindow.clearPersistedState('main-window')

// Now when you create a window with this name,
// it will use the default constructor options
const win = new BrowserWindow({
  name: 'main-window',
  width: 800,
  height: 600,
  windowStatePersistence: true
})

API 参考

窗口状态持久化 API 在 BaseWindow 和 BrowserWindow 上均可用(因为 BrowserWindow 继承自 BaseWindow),并且工作方式相同。

完整的 API 文档,请参阅:

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron