成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Electron 實(shí)例檢測

ninefive / 2766人閱讀

摘要:是第二個實(shí)例的命令行參數(shù)的數(shù)組是這個實(shí)例當(dāng)前工作目錄?;氐艉瘮?shù)第二個實(shí)例的命令行參數(shù)數(shù)組第二個實(shí)例的工作目錄返回上面是官方文檔給出的解釋,這個就是為了生成單個實(shí)例而存在的。

這個功能學(xué)名叫什么我也不太清楚,暫且就叫她實(shí)例檢測吧。有時候我們想點(diǎn)擊了快捷方式之后只打開一個應(yīng)用程序,但是顯示總是殘酷的,electron默認(rèn)的是完成打包之后每次點(diǎn)擊快捷方式都會生成一個進(jìn)程實(shí)例(除了mac),這個時候穩(wěn)住不要慌,別人實(shí)現(xiàn)了我們肯定也能實(shí)現(xiàn)而且還很簡單。

首先 我們需要了解Electron的基本知識, 點(diǎn)擊看基礎(chǔ) 。這里就不贅述了,然后我們就需要知道我們用Elenton中提供的API了。

接下來我們的主角 app.makeSingleInstance(callback) 就粉墨登場了

此方法使應(yīng)用程序成為單個實(shí)例應(yīng)用程序, 而不是允許應(yīng)用程序的多個實(shí)例運(yùn)行, 這將確保只有一個應(yīng)用程序的實(shí)例正在運(yùn)行, 其余的實(shí)例全部會被終止并退出。          當(dāng)執(zhí)行第二個實(shí)例時, 第一個實(shí)例將使用 callback (argv,workingDirectory) 調(diào)用 callback。 argv 是第二個實(shí)例的命令行參數(shù)的數(shù)組, workingDirectory 是這個實(shí)例當(dāng)前工作目錄。 通常, 應(yīng)用程序會激活窗口并且取消最小化來響應(yīng)。
  /*
    callback(): Function 回掉函數(shù)
  */
  app.makeSingleInstance(callback)
    argv String[] // 第二個實(shí)例的命令行參數(shù)數(shù)組
    workingDirectory String // 第二個實(shí)例的工作目錄
   // 返回 Boolean.

上面是官方文檔給出的解釋,這個API就是為了生成單個實(shí)例而存在的。實(shí)際上更主要的用處是用來處理在命令行打開應(yīng)用是的限制,其實(shí)在mac上通過圖標(biāo)打開嘗試啟動第二個實(shí)例的時候,系統(tǒng)會自動強(qiáng)制執(zhí)行單個實(shí)例。并且發(fā)出 open-file 和 open-url 事件。但是當(dāng)用戶在命令行中啟動應(yīng)用程序時, 系統(tǒng)的單實(shí)例機(jī)制將被繞過, 所以我們要用這個方法來保證單實(shí)例。

本質(zhì)來講就是在創(chuàng)建electron實(shí)例窗口之前,去檢查是否已經(jīng)存在一個實(shí)例,如果有那么就在啟動時激活主實(shí)例。廢話少說上代碼

const {app} = require("electron") // 引入主線程
  let mianInstance = null
  /**
  * 實(shí)例檢測
  */
  const moreInstance = app.makeSingleInstance((commandline, workingDirectory) => {
    if(mainWindow) { // 如果存在執(zhí)行以下
      // 判斷主實(shí)例窗口是否最小化 如果是的話 恢復(fù)到之前的狀態(tài)
      if (mainWindow.isMaximized()) mainWindow.restore()
      mainWindow.focus() // 主實(shí)例窗口focus
    }
  })
  // 判斷是否存在主實(shí)例
  if (moreInstance) {
    // 離開當(dāng)前的進(jìn)程
    app.quit()
  }
  // 主進(jìn)程準(zhǔn)備完畢
  app.on("ready", () => {
    // 創(chuàng)建窗口的方法
  })
總結(jié)

其實(shí)這個方面還是很容易的,我們也可以發(fā)散一下思維,如果僅僅是檢測有沒有實(shí)例 是不是通過Node環(huán)境變量也可以實(shí)現(xiàn)呢? 這個是寫文章的時候想到的,有空就試一試咯
(沒有校驗(yàn),有錯誤請直接指出來

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96440.html

相關(guān)文章

  • electron打包可選擇安裝位置,可自動更新

    摘要:事件當(dāng)發(fā)現(xiàn)一個可用更新的時候觸發(fā),更新包下載會自動開始。在上只有是有效的。方法列表對象有以下的方法設(shè)置檢查更新的,并且初始化自動更新。這個一旦設(shè)置就無法更改。向服務(wù)端查詢現(xiàn)在是否有可用的更新。在下載完成后,重啟當(dāng)前的應(yīng)用并且安裝更新。 Electron打包調(diào)參軟件(windows版) ----------------------------------可選安裝位置,可自動更新,手動更新...

    canger 評論0 收藏0
  • 利用 electron-builder 實(shí)現(xiàn) electron app 的署名/打包/發(fā)布以及自動更

    摘要:筆者系貢獻(xiàn)者之一是什么官方解釋如下簡單來說,就是一個可以將打包成安裝器,以及可以為提供自動更新功能的全家桶。也是一個開源的也是利用了的來進(jìn)行新版本的發(fā)布通知。而且因?yàn)槭峭ㄟ^靜態(tài)文件服務(wù)器實(shí)現(xiàn)的,所以大大減少了計算消耗。 筆者系 electron-builder 貢獻(xiàn)者之一(#12) electron-builder 是什么 官方解釋如下: A complete solution to ...

    banana_pi 評論0 收藏0
  • 基于Electron快速開發(fā)MacOS Menubar app

    摘要:基于開發(fā)主要涉及的技術(shù)其實(shí)就是的。此外也有人將這個做了簡單的封裝。這里要用到的是的事件文檔在系統(tǒng)中,檢測到事件,也就是未聚焦于窗口時,調(diào)用把窗口隱藏掉。用于中的,有個經(jīng)驗(yàn)是將大小設(shè)置為。 基于electron開發(fā)MacOS Menubar app主要涉及的技術(shù)其實(shí)就是Electron的 Tray API。 此外也有人將這個API做了簡單的封裝:menubar(github) 。 其基本...

    Aldous 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<