摘要:是第二個實例的命令行參數的數組是這個實例當前工作目錄。回掉函數第二個實例的命令行參數數組第二個實例的工作目錄返回上面是官方文檔給出的解釋,這個就是為了生成單個實例而存在的。
這個功能學名叫什么我也不太清楚,暫且就叫她實例檢測吧。有時候我們想點擊了快捷方式之后只打開一個應用程序,但是顯示總是殘酷的,electron默認的是完成打包之后每次點擊快捷方式都會生成一個進程實例(除了mac),這個時候穩住不要慌,別人實現了我們肯定也能實現而且還很簡單。
首先 我們需要了解Electron的基本知識, 點擊看基礎 。這里就不贅述了,然后我們就需要知道我們用Elenton中提供的API了。
接下來我們的主角 app.makeSingleInstance(callback) 就粉墨登場了
此方法使應用程序成為單個實例應用程序, 而不是允許應用程序的多個實例運行, 這將確保只有一個應用程序的實例正在運行, 其余的實例全部會被終止并退出。 當執行第二個實例時, 第一個實例將使用 callback (argv,workingDirectory) 調用 callback。 argv 是第二個實例的命令行參數的數組, workingDirectory 是這個實例當前工作目錄。 通常, 應用程序會激活窗口并且取消最小化來響應。
/* callback(): Function 回掉函數 */ app.makeSingleInstance(callback) argv String[] // 第二個實例的命令行參數數組 workingDirectory String // 第二個實例的工作目錄 // 返回 Boolean.
上面是官方文檔給出的解釋,這個API就是為了生成單個實例而存在的。實際上更主要的用處是用來處理在命令行打開應用是的限制,其實在mac上通過圖標打開嘗試啟動第二個實例的時候,系統會自動強制執行單個實例。并且發出 open-file 和 open-url 事件。但是當用戶在命令行中啟動應用程序時, 系統的單實例機制將被繞過, 所以我們要用這個方法來保證單實例。
本質來講就是在創建electron實例窗口之前,去檢查是否已經存在一個實例,如果有那么就在啟動時激活主實例。廢話少說上代碼
const {app} = require("electron") // 引入主線程 let mianInstance = null /** * 實例檢測 */ const moreInstance = app.makeSingleInstance((commandline, workingDirectory) => { if(mainWindow) { // 如果存在執行以下 // 判斷主實例窗口是否最小化 如果是的話 恢復到之前的狀態 if (mainWindow.isMaximized()) mainWindow.restore() mainWindow.focus() // 主實例窗口focus } }) // 判斷是否存在主實例 if (moreInstance) { // 離開當前的進程 app.quit() } // 主進程準備完畢 app.on("ready", () => { // 創建窗口的方法 })總結
其實這個方面還是很容易的,我們也可以發散一下思維,如果僅僅是檢測有沒有實例 是不是通過Node環境變量也可以實現呢? 這個是寫文章的時候想到的,有空就試一試咯
(沒有校驗,有錯誤請直接指出來
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96440.html
摘要:事件當發現一個可用更新的時候觸發,更新包下載會自動開始。在上只有是有效的。方法列表對象有以下的方法設置檢查更新的,并且初始化自動更新。這個一旦設置就無法更改。向服務端查詢現在是否有可用的更新。在下載完成后,重啟當前的應用并且安裝更新。 Electron打包調參軟件(windows版) ----------------------------------可選安裝位置,可自動更新,手動更新...
摘要:筆者系貢獻者之一是什么官方解釋如下簡單來說,就是一個可以將打包成安裝器,以及可以為提供自動更新功能的全家桶。也是一個開源的也是利用了的來進行新版本的發布通知。而且因為是通過靜態文件服務器實現的,所以大大減少了計算消耗。 筆者系 electron-builder 貢獻者之一(#12) electron-builder 是什么 官方解釋如下: A complete solution to ...
摘要:基于開發主要涉及的技術其實就是的。此外也有人將這個做了簡單的封裝。這里要用到的是的事件文檔在系統中,檢測到事件,也就是未聚焦于窗口時,調用把窗口隱藏掉。用于中的,有個經驗是將大小設置為。 基于electron開發MacOS Menubar app主要涉及的技術其實就是Electron的 Tray API。 此外也有人將這個API做了簡單的封裝:menubar(github) 。 其基本...
閱讀 3021·2021-11-12 10:36
閱讀 4726·2021-09-22 10:57
閱讀 1558·2021-09-22 10:53
閱讀 2636·2019-08-30 15:55
閱讀 3493·2019-08-29 17:00
閱讀 3352·2019-08-29 16:36
閱讀 2463·2019-08-29 13:46
閱讀 1348·2019-08-26 11:45