我已將我的Java應用程序作爲單實例應用程序。我已經實現了相同的文件鎖定系統。當其他實例打開時,將正在運行的應用程序置於前面
如果應用程序已經運行,我想顯示正在運行的應用程序。我如何實現這一目標?我如何訪問該應用程序的運行過程並顯示它?
我已將我的Java應用程序作爲單實例應用程序。我已經實現了相同的文件鎖定系統。當其他實例打開時,將正在運行的應用程序置於前面
如果應用程序已經運行,我想顯示正在運行的應用程序。我如何實現這一目標?我如何訪問該應用程序的運行過程並顯示它?
你所要求的是取決於操作系統,但你總是可以有自己的實現來做到這一點。您的應用程序可以在某個端口上偵聽您可以從應用程序的第二個實例發送的bring-to-front
命令。
void main(String[] args){
if(applicationAlreadyRunning){
// Send bring-to-front message to running instance on a known port
// and exit.
}
}
當收到一個帶至前的消息,你可以這樣做:
public void BringToFrontCommandReceived(){
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
myMainFrame.toFront();
myMainFrame.repaint();
}
});
}
*「listen on某個端口「*當然,如果使用套接字作爲'前端',您也可以刪除整個文件鎖並簡單地檢查該端口上的偵聽器是否爲」我已經運行?「。檢查。 –
JWS不僅提供了一個X開發平臺SingleInstanceService
,但它也(從內存)彈出應用toFront()
newActivation(String[])
。當然,如果它不是自動的,你可以明確地調用它。
[在java中限制應用程序的多個實例]的可能的重複(http://stackoverflow.com/questions/6134694/restrict-multiple-instances-of-an-application-in-java) –