【Electron

您所在的位置:网站首页 electron重启窗口 【Electron

【Electron

2023-08-23 23:45| 来源: 网络整理| 查看: 265

在使用到Electron-vue开发桌面应用时,出现一个很头疼的问题,就是程序未响应。

具体问题描述:Electron程序调用hide隐藏后,当Electron应用长时间运行后,点击托盘图标调用show函数显示应用面板,会出现未响应的情况,并且会同时获取到焦点,导致其他应用无法获取鼠标的焦点,无法进行其他操作,整个系统处于无法操作的情况。你甚至无法调出任务管理器去杀死进程。

关于问题的出现目前是在windows下,不确定是Electron的问题,还是系统的问题,但是出现评率很高,几乎试用的同事都出现过长时间挂起,程序未响应的问题。而我本机环境出现未响应确实另一种情况:出现未响应后,点击后会出现是否终止进程的提示,取消后,等待一段时间具体时间不同,几秒钟后会响应,程序正常。但是操作又会出现未响应的情况。

在github官网上差了很长一段时间,依旧没有发现相似的问题及解决办法。目前仍是难以确定具体问题。

我们用过的大部分应用基本上都会出现未响应的情况,最近用微信的时候也会出现未响应的问题。所以就想着其实用户最烦的应该是:出现未响应,获取焦点将会导致用户PC上的其他应用程序用不了,这是最崩溃的地方。

于是尝试着怎么解决:未响应的情况下,不会获取到整个系统应用的焦点。查看了一下官方文档,看到了关于显示窗口的两个函数:

show:显示窗口并获取焦点showInactive:显示窗口不获取焦点

在程序中我是用的是show函数来显示窗口,它的使用就是窗口会获得焦点,当程序隐藏时,点击托盘中应用图标就会获取焦点,显示窗口。但同时在未响应的情况下,其他程序无法获取到焦点。

改为showInactive,隐藏后调用,会显示窗口。但是如果已经存在其他应用程序在打开的情况下,无法显示窗口,只会在任务栏显示该应用,当你点击任务栏应用时,才会显示。如果只有你的一个应用在运行,那么点击托盘应用图标会显示窗口。在未响应的情况下不会出现获取焦点的时间,即便你的窗口已经打开,还是可以操作其他应用,也可以调出任务管理器,杀死未响应的进程,不影响其他程序的使用。

但是易用性会变得很差,用户不得不先点击托盘图标,然后再点击任务栏图标才能看到应用的窗口。

至于真正的未响应原因,还没有定位出来,目前还在进一步定位,关于这篇文章也会持续更新。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3