gpt4 book ai didi

java - 如何在java(CVM PhoneME)中实现单实例应用程序管理器?

转载 作者:行者123 更新时间:2023-11-30 11:58:53 25 4
gpt4 key购买 nike

我正在为基于 CVM PhoneME VM 的嵌入式平台开发应用程序管理器。 VM 由配置 CVM 的 C++ 应用程序启动,然后触发 VM 本身。此 C++ 应用程序从命令行调用,传递主类名称和 Java 应用程序的类路径。有一个主要的 Java 应用程序(我们称之为管理器),它使用类加载器加载应用程序。我希望这个管理器是一个单实例应用程序,以便它可以跟踪所有正在运行的应用程序。

换句话说:我第一次启动应用程序(例如 app1)时,VM 将启动并且管理器将加载 app1。在进一步调用加载其他应用程序(app2、app3 等)时,Manager 的同一个实例将加载这些应用程序。

管理器工作正常,除了这不是单个实例。

有没有可能做我想做的事?

我发现了这个: http://www.knowledgesutra.com/forums/topic/59760-how-to-implement-single-instance-application-on-java/

这几乎和我想要的一样,除了应用程序加载部分。但是,CVM 实现中没有必要的包。

最佳答案

有多种方法可以强制执行应用程序的单个实例。例如,Firefox 使用锁定文件。

我见过的最常见的方法之一是无论如何启动“管理器”,但在启动时,尝试在某个端口上打开一个 ServerSocket 来监听连接。

如果您未能打开套接字,您就知道您不是单例实例。因此,不是启动应用程序,而是连接到监听套接字并将程序参数发送给它。

如果您成功打开套接字,请执行要求启动 app1 的操作,同时在另一个线程上监听来自那些作为重复实例启动的管理器的传入连接。

编辑:这描述了非 ME 环境中的过程。我不是 ME 开发者,无法评论它在手机上的可行性。

关于java - 如何在java(CVM PhoneME)中实现单实例应用程序管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2877440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com