Electron 从基础到实战笔记主进程.app对象(1) Electron App对象及其事件
1. app 对象概述
app 对象用于主进程中,它通过发出一些列事件来控制 应用程序的事件生命周期
import { app } from 'electron'; // ES 模块 // 或者使用 CommonJS模块,这个取决于你在 package.json 中的配置 const { app } = require('electron');
2. 由 app 对象发出的事件
2.1 app 事件表
事件名称 | 描述 | 场景 | 说明 | 返回值 | 仅特定平台可用 | 平台差异性 |
will-finish-launching |
当应用程序完成基础的启动的时候被触发。 | 绝大部分情况下,你必须在ready事件句柄中处理所有事务。 | 通常会在这里为 open-file 和 open-url 设置监听器,并启动崩溃报告和自动更新。 |
|
||
ready |
当 Electron 完成初始化时,发出一次。 | 你也可以通过调用 app.isReady() 来检查该事件是否已被触发,以及通过 app.whenReady() 得到一个当Electron已初始化后fulfill 的 Promise。 | 在 macOS 上,如果通过通知中心启动应用程序,launchInfo 保存 NSUserNotification 的 userInfo 或 UNNotificationResponse 的信息。 | |||
window-all-closed |
当所有的窗口都被关闭时触发。 |
|
||||
before-quit |
在程序关闭窗口前发信号。 |
|
event Event | 在 Windows 系统中,如果应用程序因系统关机/重启或用户注销而关闭,那么这个事件不会被触发。 | ||
will-quit |
当所有窗口被关闭后触发,同时应用程序将退出。 |
|
event Event | 在 Windows 系统中,如果应用程序因系统关机/重启或用户注销而关闭,那么这个事件不会被触发。 | ||
quit |
在应用程序退出时发出。 |
|
在 Windows 系统中,如果应用程序因系统关机/重启或用户注销而关闭,那么这个事件不会被触发。 | |||
open-file |
当用户想要在应用中打开一个文件时发出。 | open-file 事件通常在应用已经打开,并且系统要再次使用该应用打开文件时发出。 open-file也会在一个文件被拖到 dock 并且还没有运行的时候发出。 请确认在应用启动的时候(甚至在 ready 事件发出前) 就对 open-file 事件进行监听。 |
|
macOS | ||
open-url |
当用户想要在应用中打开一个 URL 时发出。 | 你的应用程序的 Info. plist 文件必须在 CFBundleURLTypes 这个key中定义 url scheme, 并将 NSPrincipalClass 设置为 AtomApplication。 |
|
macOS | ||
activate |
当应用被激活时发出。 | 各种操作都可以触发此事件, 例如首次启动应用程序、尝试在应用程序已运行时或单击应用程序的坞站或任务栏图标时重新激活它。 | macOS | |||
did-become-active |
当应用被激活时发出。 | 与 activate 事件的不同是应用,程序激活时都会触发 did-become-active ,而不仅仅在 Dock 图标被点击或应用程序被重新启动的时候。 | macOS | |||
continue-activity |
当来自不同设备的活动想要在 Handoff 期间恢复时触发。 |
|
|
macOS | ||
will-continue-activity |
当来自不同设备的活动想要在 Handoff 期间之前恢复时触发。 | 如果你想处理这个事件,你应该调用 event.preventDefault() 。 |
|
macOS | ||
continue-activity-error |
当来自不同设备的活动在 Handoff 期间恢复失败时触发。 |
|
macOS | |||
activity-was-continued |
当来自不同设备的活动通过 Handoff 成功恢复后触发。 |
|
macOS | |||
update-activity-state |
当 Handoff 通过另一个设备恢复时触发。 | 如果需要更新要传输的状态,你应该立即调用 event.preventDefault(), 构造新的 userInfo 字典,并及时调用 app.updateCurrentActiviy()。 否则,操作会失败,并且触发 continue-activity-error |
|
macOS | ||
new-window-for-tab |
当用户点击原生的macOS新标签按钮时触发。 | 只有在当前 BrowserWindow 有 tabbingIdentifier 时,新建tab按钮才可见。 | event Event | macOS | ||
browser-window-blur |
当一个 browserWindow 失去焦点时触发。 |
|
||||
browser-window-focus |
当一个 browserWindow 获得焦点时触发。 |
|
||||
browser-window-created |
当一个新的 browserWindow 被创建时触发。 |
|
||||
web-contents-created |
当一个新的 webContents 被创建时触发。 |
|
||||
certificate-error |
当对 url 的 certificate 证书验证失败的时候发出。 | 如果需要信任这个证书,你需要阻止默认行为 event.preventDefault() 并且调用 callback(true)。 |
|
|||
select-client-certificate |
当一个客户证书被请求的时候发出。 |
|
|
|||
login |
当 webContents 要进行基本身份验证时触发。 | 默认行为是取消所有身份验证。 |
|
|
||
gpu-info-update |
每当有 GPU 信息更新时触发。 | |||||
render-process-gone |
渲染器进程意外消失时触发。 | 这种情况通常因为进程崩溃或被杀死。 | ||||
child-process-gone |
子进程意外消失时触发。 | 这种情况通常因为进程崩溃或被杀死。 | 子进程不包括渲染器进程。 | |||
accessibility-support-changed |
当 Chrome 的辅助功能状态改变时触发。 | 当启用或禁用辅助技术时将触发此事件,例如屏幕阅读器 。 | 参考:https://www.chromium.org/developers/design-documents/accessibility |
|
macOS Windows | |
session-created |
当 Electron创建了一个新的 session后被触发 | session Session | ||||
second-instance |
当第二个实例被执行并且调用 app.requestSingleInstanceLock() 时,这个事件将在你的应用程序的首个实例中触发。 | argv 是第二个实例的命令行参数的数组, workingDirectory 是这个实例当前工作目录。 通常, 应用程序会激活窗口并且取消最小化来响应。 |
|