一种实现客户端单实例运行的方法、装置及存储介质制造方法及图纸

技术编号:21059514 阅读:20 留言:0更新日期:2019-05-08 06:35
本发明专利技术公开了一种实现客户端单实例运行的方法、装置及存储介质,适用于应用启动技术领域。本发明专利技术提供的方法包括:预定客户端第一次启动后,对所述预定客户端对应的本地文件进行加锁操作,并创建一个本地服务器对象;当监听到所述预定客户端被再次启动,确认当前启动为第二次启动后,向所述本地服务器对象发送消息,并退出当前启动进程;所述本地服务器对象接收到所述消息后,在系统界面展示主程序窗口。本发明专利技术不仅实现客户端启动的单实例运行,减少数据混乱引起的访问错误,节省系统资源,而且方便获取并打开首次启动的窗口,提升用户体验。

【技术实现步骤摘要】
一种实现客户端单实例运行的方法、装置及存储介质
本专利技术属于应用启动
,尤其涉及一种实现客户端单实例运行的方法、装置及存储介质。
技术介绍
应用程序在启动时,系统会创建一个启动进程来执行应用启动任务,具体会通过创建一个实例来管理启动进程。客户端每打开一次,系统就会创建一个实例,多次打开客户端会引起数据冲突,导致访问数据丢失或错误。为保证客户端启动全局只有一个单实例,目前,常用的方法是使用互斥锁实现启动进程的单实例运行,互斥锁可以实现应用启动进程只被一个实例对象访问,但二次启动时,将无法显示已经打开过的客户端程序,影响用户体验。
技术实现思路
有鉴于此,本专利技术实施例提供了一种实现客户端单实例运行的方法、装置及存储介质,用于实现客户端的单实例运行,并保证二次启动时能够显示已经打开的客户端。。本专利技术实施例的第一方面,提供了一种实现客户端单实例运行的方法,包括:预定客户端第一次启动后,对所述预定客户端对应的本地文件进行加锁操作,并创建一个本地服务器对象;当监听到所述预定客户端被再次启动,确认当前启动为第二次启动后,向所述本地服务器对象发送消息,并退出当前启动进程;所述本地服务器对象接收到所述消息后,在系统界面展示主程序窗口。本专利技术实施例的第二方面,提供了一种实现客户单单实例运行的装置,包括:加锁模块,用于预定客户端第一次启动后,对所述预定客户端对应的本地文件进行加锁操作,并创建一个本地服务器对象;确认模块,用于当监听到所述预定客户端被再次启动,确认当前启动为第二次启动后,向所述本地服务器对象发送消息,并退出当前启动进程;显示模块,用于所述本地服务器对象接收到所述消息后,在系统界面展示主程序窗口。本专利技术实施例的第三方面,提供了一种装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本专利技术实施例第一方面所述方法的步骤。本专利技术实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本专利技术实施例第一方面提供的所述方法的步骤。本专利技术实施例的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被一个或多个处理器执行时实现本专利技术实施例第一方面提供的所述方法的步骤。本专利技术实施例中,通过对第一次启动时的客户端添加文件锁,并创建本地服务器,在该客户端二次启动时,确认当前为二次启动后,退出当前启动线程,并通过与本地服务器通信,调用展示第一次启动时的主窗口。从而实现客户端启动的单实例运行,在与互斥锁具有同等功能下,方便获取并打开首次启动的窗口,不仅节省系统资源,而且能减少数据混乱引起的访问错误,提升用户体验。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的实现客户端单实例运行的方法的一个实施例流程图;图2为本专利技术实施例提供的实现客户端单实例运行的方法的另一个实施例流程图;图3为本专利技术实施例提供的实现客户端单实例运行的装置的结构示意图;图4为本专利技术实施例提供的终端装置的结构示意图。具体实施方式本专利技术实施例提供了一种实现客户端单实例运行的方法、装置及存储介质,用于实现客户端全局只有一个单实例运行,并方便调用已经打开过的客户端窗口。为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。实施例一:请参阅图1,本专利技术实施例提供的单例类接口调用方法的流程示意图,包括以下步骤:S101、预定客户端第一次启动后,对所述预定客户端对应的本地文件进行加锁操作,并创建一个本地服务器对象;所述预定客户端指的是安装在用户设备上应用程序,如斗鱼APP客户端。所述启动是指用户通过点击exe可执行文件或桌面快捷启动图标打开应用程序的过程。应用程序在启动时,会执行一系列任务,如数据初始化、获取运行环境,连接网络发起网络请求等,一般可通过创建单实例管理应用启动过程。所述预定客户端对应的本地文件即安装客户端后,该存放在系统硬盘上应用文件,这些本地文件中包含有配置文件、插件及可执行文件等等,所述加锁操作即对本地文件添加文件锁,使得该本地文件只能被当前程序访问,即只能被当前单实例访问。所述本地服务器即在本地创建的服务器,可用于进程通信,如通过QLocalServer实现的基于本地套接字(socket)的服务端,所述QLocalServer用于创建本地服务器,可接收来自本地的socket的连接。所述本地服务器对象用于处理与客户端client的通信消息。可选的,获取所述预定客户端对应的本地文件名称和当前进程会话ID,拼接所述本地文件名称和所述当前进程会话ID作为所述预定客户端唯一ID。进一步的,利用所述预定客户端唯一ID标识所述本地服务器对象和所述本地文件的文件锁,调用Listen函数监听所述预定客户端唯一ID。S102、当监听到所述预定客户端被再次启动,确认当前启动为第二次启动后,向所述本地服务器对象发送消息,并退出当前启动进程;所述再次启动指的是第一次启动后客户端尚处于运行过程中,客户端又再次被启动。客户端每次启动都会创建一个实例管理启动进程,频繁启动客户端容易引起访问数据混乱,而仅仅使用互斥锁防止客户端重复启动,容易在用户最小化到托盘后,第二次打开时客户端不会出现任何反应,当系统托盘中应用程序较多时,难以找到要打开的客户端,直接启动又不会有任何反应,这样会直接影响用户使用体验。当前单实例启动进程会首先访问本地文件判断本地文件是否已添加文件锁,当发现本地文件不能加载后,即确认当前启动是否为第二次启动,由于客户端每次被启动后可能会退出运行状态,所以需要确认当前启动状态,具体的,获取所述预定客户端对应的本地文件句柄,判断所述本地文件句柄是否加锁;当所述本地文件句柄未加锁,则确认当前启动为第二次启动。所述文件句柄用于唯一表识本地文件,可以利用所述预定客户端唯一ID表示。S103、所述本地服务器对象接收到所述消息后,在系统界面展示主程序窗口。通过与本地服务器对象通信,可以确认当前启动为二次启动,退出当前启动进程,并且本地服务器对象成功接收到消息后,可以控制展示主程序窗口。所述主程序窗口即第一次启动客户端后,客户端当前的展示窗口。通过与本地服务器的进程通信,当前启动进程可以通知展示主窗口。可选的,创建一个本地连接对象,所述本地连接对象调用connectToServer函数连接所述本地服务器对象,连接成功后,向所述本地服务器对象发送预定消息。所述预定消息可以是用于验证通信是否成功的消息,也可以是执行预定操作的消息,如回调客户端主界面等。上述步骤,通过为客户端本地文件加锁保证客户端单实例运行,并确认当前为二次启动后退出启动进程,本文档来自技高网...

【技术保护点】
1.一种实现客户端单实例运行的方法,其特征在于,包括:预定客户端第一次启动后,对所述预定客户端对应的本地文件进行加锁操作,并创建一个本地服务器对象;当监听到所述预定客户端被再次启动,确认当前启动为第二次启动后,向所述本地服务器对象发送消息,并退出当前启动进程;所述本地服务器对象接收到所述消息后,在系统界面展示主程序窗口。

【技术特征摘要】
1.一种实现客户端单实例运行的方法,其特征在于,包括:预定客户端第一次启动后,对所述预定客户端对应的本地文件进行加锁操作,并创建一个本地服务器对象;当监听到所述预定客户端被再次启动,确认当前启动为第二次启动后,向所述本地服务器对象发送消息,并退出当前启动进程;所述本地服务器对象接收到所述消息后,在系统界面展示主程序窗口。2.根据权利要求1所述的方法,其特征在于,所述预定客户端第一次启动后,对所述客户端对应的本地文件进行加锁操作,并创建一个本地服务器对象还包括:获取所述预定客户端对应的本地文件名称和当前进程会话ID,拼接所述本地文件名称和所述当前进程会话ID作为所述预定客户端唯一ID。3.根据权利要求2所述的方法,其特征在于,所述拼接所述本地文件名称和所述当前进程会话ID作为所述预定客户端唯一ID还包括:利用所述预定客户端唯一ID标识所述本地服务器对象和所述本地文件的文件锁,调用Listen函数监听所述预定客户端唯一ID。4.根据权利要求1所述的方法,其特征在于,所述确认当前启动为第二次启动后具体为:获取所述预定客户端对应的本地文件句柄,判断所述本地文件句柄是否加锁;当所述本地文件句柄未加锁,则确认当前启动为第二次启动。5.根据权利要求1所述的方法,其特征在于,所述向所述本地服务器对象发送消息具体为:创建一个本地连接对象,所述本地连接对象调用connectToServer函数连接所述本地服务器对象,连接成...

【专利技术属性】
技术研发人员:黄浩
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1