iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Electron电源状态管理的方法是什么
  • 197
分享到

Electron电源状态管理的方法是什么

2023-07-05 11:07:33 197人浏览 薄情痞子
摘要

这篇“Electron电源状态管理的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Electron电源状态管理的方

这篇“Electron电源状态管理的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Electron电源状态管理的方法是什么”文章吧。

    Electron 电源相关模块

    在 Electron 中有两个模块是跟电源相关的:

    • powerMonitor:用于获取电源相关信息,监听电源相关事件

    • powerSaveBlocker:用于阻止系统进入睡眠状态

    其中 powerMonitor 模块提供的接口

    Electron电源状态管理的方法是什么

    powerSaveBlocker 模块提供的方法

    Electron电源状态管理的方法是什么

    接下来详细介绍它们提供的能力,以及具体的应用场景:

    空闲状态监控

    getSystemIdleTime 方法可以获取当前用户的空闲时间,如果用户一直没有对电脑做任何操作,系统会认为当前用户处于空闲状态,并进行计时,这个 api 可以返回以秒为单位的空闲时间。示例代码如下:

    const { powerMonitor } = require('electron')setInterval(() => {  console.log(powerMonitor.getSystemIdleTime())}, 3000)

    如果一直没有操作,会每隔三秒打印:

    3
    6
    9
    12
    15
    18

    如果中间用户做了任何操作,例如:

    • 点击鼠标

    • 滑动页面

    • 按下键盘

    • 碰触摸板

    • 碰 TouchBar

    • ……

    那么系统会判定用户非空闲,然后将定时器重置,从零重新开始计时。与之相关的还有一个 API 是 getSystemIdleState(idleThreshold: number),可以通过传递一个时间阈值来判断用户的状态,有四种可能的值:

    • active:用户处于活动状态

    • idle:用户处于空闲状态

    • locked:系统屏了

    • unknown:未知状态

    电源状态监控

    当电脑接入电源的时候,会触发 on-ac事件,当拔掉电源,电池变成放电状态时,会触发 on-battery事件。除了这两个事件之外,powerMonitor 还分别提供了一个 onBatteryPower 属性和一个 isOnBatteryPower 方法来判断是否使用电池供电,其实这两个东西是一样的,从 Electron 源码 lib/browser/api/power-monitor.ts 中可以看到仅仅是做了一个 getter 而已:

    import { EventEmitter } from 'events';import { app } from 'electron/main';const {  createPowerMonitor,  getSystemIdleState,  getSystemIdleTime,  isOnBatteryPower} = process._linkedBinding('electron_browser_power_monitor');class PowerMonitor extends EventEmitter {  // 省略部分代码...  getSystemIdleState (idleThreshold: number) {    return getSystemIdleState(idleThreshold);  }  getSystemIdleTime () {    return getSystemIdleTime();  }  isOnBatteryPower () {    return isOnBatteryPower();  }  get onBatteryPower () {    return this.isOnBatteryPower();  }}

    锁屏和解锁

    主进程可以监听到用户电脑的锁屏和解锁状态,这个 API 可以帮助我们做性能优化,例如页面中有个轮播图,每隔 5 秒就做一次轮播动画切换,消耗性能,如果此时用户都已经锁屏了,其实就没有必要再继续轮播了,可以用下面的代码通知渲染进程:

    powerMonitor.on('lock-screen', () => {  win.WEBContents.send('lock-screen')})powerMonitor.on('unlock-screen', () => {  win.webContents.send('unlock-screen')})

    而在渲染进程的代码里可以这样写:

    function Banner() {  const [autoplay, setAutoplay] = useState(true)  useEffect(() => {    const lockScreen = () => setAutoplay(false)    const unlockScreen = () => setAutoplay(true)    ipcRenderer.on('lock-screen', lockScreen)    ipcRenderer.on('unlock-screen', unlockScreen)    return () => {      ipcRenderer.removeListener('lock-screen', lockScreen)      ipcRenderer.removeListener('unlock-screen', unlockScreen)    }  }, [])  return (    <div className="banner-widget">      <div className="carousel">        <Slider          autoplay={autoplay}          autoplaySpeed={10000}          arrows={false}        >        </Slider>      </div>    </div>  )}

    这样就实现了:用户锁屏后不进行轮播,用户解锁后恢复轮播的效果。

    休眠和唤醒

    powerMonitor 模块也可以监听到系统休眠和唤醒事件,对应的 API 是:

    powerMonitor.on('suspend', () => {  console.log('系统休眠')})powerMonitor.on('resume', () => {  console.log('休眠唤醒')})

    想要触发这个 API 的话,可以点击左上角的苹果 icon,在下拉菜单里面选择睡眠即可:

    Electron电源状态管理的方法是什么

    如果同时监听了锁屏和解锁,这些事件会同时触发,但是回调的顺序是不一定的,实际测试的时候发现下面两种情况都可能发生:

    suspendresumelock-screenunlock-screensuspendlock-screenresumeunlock-screen

    其实第二次的顺序是符合直觉的,首先是「休眠」触发了「锁屏」,然后「休眠唤醒」触发了「屏幕解锁」。

    系统行为阻断

    Maclinux 平台下,powerMonitor 提供了 shutdown 事件来监听关机事件:

    powerMonitor.on('shutdown', (e) => {  e.preventDefault()})

    如果在事件回调里面调用了 preventDefault方法,其实是不能阻止系统关机的,但是可以延缓关机行为,从而让当前应用有足够的时间来做一些清理工作,当清理工作完成之后,要尽快调用 app.quit()来退出程序。

    操作系统在长时间没有收到用户操作事件后,会进入省电模式,显示器会被自动关闭,Electron 的 powerSaveBlocker 模块可以阻止系统进入睡眠模式,让操作系统和屏幕持续工作。示例代码如下:

    const { powerSaveBlocker } = require('electron')// 阻止系统自动进入休眠状态const id = powerSaveBlocker.start('prevent-display-sleep')// 指定 id 的 powerSaveBlocker 是否启动console.log(powerSaveBlocker.isStarted(id))setTimeout(()=>{  // 停止阻止行为  powerSaveBlocker.stop(id)  console.log(powerSaveBlocker.isStarted(id))}, 5000)

    powerSaveBlocker是一个独立的模块,它只提供了三个方法:

    • start:阻止休眠

    • stop:停止阻止行为

    • isStart:查询阻止行为是否处于启用状态

    其中start方法需要传一个参数,有两个可选的值:

    • prevent-app-suspension:保持系统活跃,但屏幕可以不亮

    • prevent-display-sleep:保持系统和屏幕活跃,屏幕要一直亮

    举个例子,如果应用持续播放音频,可以用 prevent-app-suspension,音频不需要屏幕常亮,如果应用持续播放视频或者PPT,就需要用 prevent-display-sleep 了,它们可以被同时调用,后者的优先级是高于前者的:

    例如 A 调用了 prevent-app-suspension,B 调用了 prevent-display-sleep,那么 prevent-display-sleep 将生效,当 B 停止后 prevent-app-suspension 才生效。

    以上就是关于“Electron电源状态管理的方法是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: Electron电源状态管理的方法是什么

    本文链接: https://www.lsjlt.com/news/351286.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Electron电源状态管理的方法是什么
      这篇“Electron电源状态管理的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Electron电源状态管理的方...
      99+
      2023-07-05
    • 一文详解Electron电源状态管理
      目录Electron 电源相关模块其中 powerMonitor 模块提供的接口powerSaveBlocker 模块提供的方法空闲状态监控电源状态监控锁屏和解锁休眠和唤醒系统行为阻...
      99+
      2023-03-10
      Electron 电源状态管理 Electron 状态管理
    • Vuex状态管理的方法是什么
      这篇文章主要介绍“Vuex状态管理的方法是什么”,在日常操作中,相信很多人在Vuex状态管理的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vuex状态管理的方法是什么”的疑惑有所帮助!接下来,请跟...
      99+
      2023-06-03
    • Vue之Pinia状态管理的方法是什么
      这篇文章主要介绍“Vue之Pinia状态管理的方法是什么”,在日常操作中,相信很多人在Vue之Pinia状态管理的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue之Pinia状态管理的方法是什么...
      99+
      2023-07-05
    • ReactNative状态管理redux使用的方法是什么
      这篇“ReactNative状态管理redux使用的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ReactNat...
      99+
      2023-07-05
    • React各种状态管理器的原理及使用方法是什么
      今天就跟大家聊聊有关React各种状态管理器的原理及使用方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先我们要先知道什么是状态管理器,这玩意是干啥的?当我们在多个页面中使...
      99+
      2023-06-25
    • Android源码使用16进制进行状态管理的方法
      前言 在Android源码中,对于“多状态”的管理总是通过16进制数字来表示,类似这种格式: //ViewGroup.java protected int mGroupFlag...
      99+
      2024-04-02
    • vuex状态管理数据状态查询与更改的方法
      本篇内容介绍了“vuex状态管理数据状态查询与更改的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!状态管理数据状态查询与更改1.main...
      99+
      2023-06-30
    • React状态提升的方法是什么
      今天小编给大家分享一下React状态提升的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.介绍所谓 状态提升 就...
      99+
      2023-07-06
    • Flutter组件状态管理的3种方法
      前言 前面讲了Flutter布局,布局只是静态的。在Flutter中,组件分为StatelesslWidget和StatefulWidget。 StatelesslWidget 没有...
      99+
      2024-04-02
    • Flink状态管理是怎么工作的
      Flink状态管理是通过内置的状态后端来实现的。Flink支持多种状态后端,如MemoryStateBackend、FsStateB...
      99+
      2024-04-02
    • Logstash开源日志管理方法是什么
      本篇内容主要讲解“Logstash开源日志管理方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Logstash开源日志管理方法是什么”吧!Logstash是具有实时流水线能力的开源的数据...
      99+
      2023-06-27
    • React5种非常流行的状态管理库是什么
      本篇内容主要讲解“React 5种非常流行的状态管理库是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React 5种非常流行的状态管理库是什么”吧!如果你...
      99+
      2024-04-02
    • win10资源管理器重启的方法是什么
      要重启Windows 10的资源管理器,您可以按照以下步骤操作:1. 打开任务管理器。您可以通过按下Ctrl + Shift + E...
      99+
      2023-09-16
      win10
    • Flutter组件状态管理的方法有哪些
      这篇文章主要为大家展示了“Flutter组件状态管理的方法有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flutter组件状态管理的方法有哪些”这篇文章吧。前言前面讲了Flutter布局,...
      99+
      2023-06-29
    • Electron网络拦截的方法是什么
      本篇内容介绍了“Electron网络拦截的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Electron 提供的 webReque...
      99+
      2023-07-05
    • Vue简单状态管理之store模式是什么
      这篇文章给大家分享的是有关Vue简单状态管理之store模式是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。概述store 状态管理模式的实现思想很简单,就是定义一个 store 对象,对象里有 state ...
      99+
      2023-06-15
    • 服务器状态查询的方法是什么
      有多种方法可以查询服务器状态,以下是其中几种:1. 通过命令行工具查询:使用命令行工具(如ping、telnet、tracert等)...
      99+
      2023-06-10
      服务器状态 服务器
    • windows8更改电源计划设置的方法(windows8电源管理)
      适用范围:Windows 8 消费者预览版 知识点分析: 在 Windows 8 系统下进行更改电源计划设置。 操作步骤: 1. 在 &ld别”下打开“系统和安全”,找到“...
      99+
      2023-06-04
      windows8电源管理 方法 windows8 电源 计划 更改
    • 电脑远程健康管理的方法是什么
      电脑远程健康管理的方法包括以下几种:1. 远程医疗咨询:利用网络技术,医生与患者进行在线视频或文字咨询,解决一些常见的健康问题。2....
      99+
      2023-06-12
      远程健康管理
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作