【Electron-Vue】构建桌面应用(40)- Electron程序未响应

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

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

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

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

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值