CN104486389A - 一种窗口管理服务与app间的通信通道建立方法和系统 - Google Patents

一种窗口管理服务与app间的通信通道建立方法和系统 Download PDF

Info

Publication number
CN104486389A
CN104486389A CN201410729607.3A CN201410729607A CN104486389A CN 104486389 A CN104486389 A CN 104486389A CN 201410729607 A CN201410729607 A CN 201410729607A CN 104486389 A CN104486389 A CN 104486389A
Authority
CN
China
Prior art keywords
app
windowid
window
iwindow
activity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410729607.3A
Other languages
English (en)
Other versions
CN104486389B (zh
Inventor
田泽丰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shaanxi Shaduofa Information Technology Co ltd
Original Assignee
Shanghai Feixun Data Communication Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Feixun Data Communication Technology Co Ltd filed Critical Shanghai Feixun Data Communication Technology Co Ltd
Priority to CN201410729607.3A priority Critical patent/CN104486389B/zh
Publication of CN104486389A publication Critical patent/CN104486389A/zh
Application granted granted Critical
Publication of CN104486389B publication Critical patent/CN104486389B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明提供一种窗口管理服务与APP间的通信通道建立方法和系统,应用于安卓系统,打开一个APP,创建一个IWindow接口实例和一个对应的Binder服务线程;每打开APP的一个Activity,生成对应的WindowID,并将Activity和WindowID添加到哈希表sActivityMap中;通过sWindowSession接口,调用窗口管理服务的会话服务,创建窗口状态实例,保存IWindow接口实例和WindowID到窗口状态实例中,将窗口状态实例和WindowID添加到哈希表sWindowMap中。本发明将窗口管理服务与APP间的多个IWindow通信通路简化为一条,提高了系统效率。

Description

一种窗口管理服务与APP间的通信通道建立方法和系统
技术领域
本发明涉及通信领域,特别是涉及一种应用于安卓系统的窗口管理服务与APP间的通信通道建立方法和系统。
背景技术
在现有的安卓(Android)系统中,打开一个APP(Application,应用程序)时,通过远程调用窗口管理服务(WindowManagerService)的会话开启函数(openSession函数),来获得APP访问窗口管理服务的会话(Session)服务的远程调用接口sWindowSession。窗口管理服务的会话开启函数创建sWindowSession远程调用接口,并且创建对应的Binder服务线程,用来监控APP发送过来的请求。当APP创建一个Activity时,会随之创建一个IWindow接口实例,并启动该IWindow接口实例对应Binder服务线程,之后通过sWindowSession接口访问窗口管理服务的会话服务,将IWindow接口实例传递到窗口管理服务,窗口管理服务会创建窗口状态(WindowState)实例,保存IWindow接口实例,与Activity进行对应。窗口状态实例可以通过IWindow接口实例访问APP提供的各种服务。在Activity关闭时,需要关闭IWindow接口实例以及对应的Binder服务线程。
具体来讲,安卓系统打开一个APP时,通过远程调用窗口管理服务中的会话开启函数获得一个IWindowSession的IBinder远程调用接口实例sWindowSession,会话开启函数会开启一个Binder服务线程,专门处理该sWindowSession传递过来的请求。由于每个APP都会调用会话开启函数来获取IWindowSession的IBinder远程调用接口实例sWindowSession,这样系统打开了多少个APP,窗口管理服务就会开启多少个Binder服务线程,用来监控和处理APP通过sWindowSession接口传递过来的请求,窗口管理服务通过Session.java实现sWindowSession接口对应的相关服务。从而建立起APP到窗口管理服务之间的通信通道。
并且,如图1所示,每个APP中会打开多个Activity,该APP下的所有Activity都会共用一个sWindowSession接口。当打开一个Activity时,应用主线程都会创建一个IWindow对象,并保存到Activity中,同时启动一个Binder服务线程,该服务线程用来监控和处理IWindow对象传递过来的服务和请求。接下来通过sWindowSession接口提供的服务函数,将IWindow对象传递到窗口管理服务中,窗口管理服务创建窗口状态实例,与APP打开的Activity一一对应,窗口状态实例对象保存传递过来的IWindow对象,从而建立窗口管理服务到APP的Activity之间的通信通道。同时窗口管理服务中建立一个IWindow与窗口状态实例对应的哈希表mWindowMap,当APP的Acitivity通过sWindowSession调用窗口管理服务的会话服务时,只需要传递IWindow对象过来,窗口管理服务就可以通过该IWindow实例从哈希表mWindowMap中找到窗口状态实例,从而完成相关的功能调用。当窗口管理服务完成相关功能后,通过IWindow接口实例调用Activity提供的远程服务(在Activity创建IWindow对象时,已经启动Binder服务线程,用来监控和处理窗口管理服务,并通过IWindow接口实例传递过来的请求)。当APP关闭一个Activity时,需要通过sWindowSession接口通知窗口管理服务,窗口管理服务的会话服务收到对应的请求后,释放Activity对应的窗口状态实例的相关操作,并且从哈希表mWindowMap中解除IWindow接口实例与窗口状态实例之间的对应关系,同时Activity关闭IWindow接口实例对应Binder服务线程,释放占用的系统资源。
从图1不难看出,在在APP与窗口管理服务之间的通信通道中,窗口管理服务针对每个APP,只需要创建一个Binder服务线程,APP下的所有Activity共用一个sWindowSession远程调用接口来使用窗口管理服务提供的会话服务,每个sWindowSession远程调用都需要带IWindow参数,这样窗口管理服务的会话服务就可以通过IWindow参数从从哈希表mWindowMap中找到窗口状态实例,从而完成对应的功能。
如图2所示,在窗口管理服务到APP的通信通道中,每个Activity在创建IWindow远程调用接口时,都会创建一个Binder服务线程来监控和处理传递过来的请求和服务,而创建这么多Binder服务线程的目的仅仅只是为了方便窗口管理服务中的窗口状态实例(Activity在窗口管理服务中的映射)调用时能够更直接的对应到APP中的Activity,而不是为了系统的优化。
实际上在安卓系统中,APP与窗口管理服务的交互并不是太频繁,完全不需要每个Activity都需要一个IWindow接口实例和Binder服务线程,只要在窗口管理服务端通过一个Binder线程就能够处理APP过来的请求和服务,同样在APP端也只需要一个Binder线程就能够处理窗口管理服务过来的请求和服务。但是现有的技术并不支持窗口管理服务到APP之间的但IWindow接口实例访问功能。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种窗口管理服务与APP间的通信通道建立方法和系统,用于解决现有技术中不支持窗口管理服务到APP之间的单IWindow接口实例访问功能的问题。
为实现上述目的及其他相关目的,本发明提供一种窗口管理服务与APP间的通信通道建立方法,应用于安卓系统,包括:打开一个APP,获取sWindowSession接口,创建一个IWindow接口实例,同时创建一个对应的Binder服务线程,并静态保存IWindow接口实例;针对所述APP,打开所述APP的一个Activity,生成一个对应的WindowID,并将Activity和WindowID添加到哈希表sActivityMap中,且哈希表sActivityMap保存至所述APP中;通过sWindowSession接口,附带IWindow接口实例和Activity对应的WindowID调用窗口管理服务的会话服务,创建窗口状态实例,保存IWindow接口实例和WindowID到窗口状态实例中,将窗口状态实例和WindowID添加到哈希表sWindowMap中,并将哈希表sWindowMap保存至窗口管理服务。
可选地,与APP的Activity对应的WindowID是通过随机数的方式生成的。
可选地,WindowID是整数数据类型的随机数。
可选地,在通过随机数的方式生成WindowID时,判断生成的WindowID是否与APP中已存在的WindowID相同:如果相同,则重新通过随机数的方式生成新的WindowID;如果不相同,则将生成的WindowID作为Activity对应的WindowID。
可选地,当窗口管理服务的窗口状态实例访问IWindow接口实例提供的服务时,要附带WindowID。
可选地,哈希表sActivityMap中,Activity与WindowID是一一对应的;哈希表sWindowMap中,WindowID与窗口状态实例是一一对应的。
可选地,在关闭所述APP的一个Activity时,从哈希表sActivityMap中删除该Activity和对应的WindowID;并通过sWindowSession接口,附带IWindow接口实例和Activity对应的WindowID调用窗口管理服务的会话服务,通过WindowID从哈希表sWindowMap中找到对应的窗口状态实例并释放。
一种窗口管理服务与APP间的通信通道建立系统,应用于安卓系统,包括:IWindow接口实例和Binder服务线程的创建单元、WindowID生成单元、窗口状态实例生成单元、哈希表生成单元和控制单元;所述IWindow接口实例和Binder服务线程的创建单元用于根据APP创建IWindow接口实例和Binder服务线程;所述WindowID生成单元用于针对同一个APP的不同Activity,生成对应的WindowID;所述窗口状态实例生成单元用于通过sWindowSession接口,附带IWindow接口实例和Activity对应的WindowID调用窗口管理服务的会话服务,创建窗口状态实例;所述哈希表生成单元用于生成哈希表sActivityMap和哈希表sWindowMap;所述控制单元用于控制所述IWindow接口实例和Binder服务线程的创建单元、所述WindowID生成单元、所述窗口状态实例生成单元、所述哈希表生成单元。
可选地,一个APP创建一个IWindow接口实例和一个Binder服务线程。
可选地,哈希表sActivityMap是Activity与WindowID的对应列表,其保存在APP中;哈希表sWindowMap是窗口状态实例与WindowID的对应列表,其保存至窗口管理服务中。
如上所述,本发明的窗口管理服务与APP间的通信通道建立方法和系统,窗口管理服务和APP之间引入了WindowID机制,将现有技术中的窗口管理服务和APP之间的多个IWindow通信通路简化成了一条通信通路,并且,通过WindowID机制完成了窗口管理服务的窗口状态实例与APP的Activity之间的映射。本发明具有以下有益效果:
1)本发明的APP只需要建立一个IWindow的Binder服务线程,大量减少底层系统的Binder开销,增强系统效率,特别是在很多Activity打开的情况下;
2)通过WindowID机制更加方便简洁的完成窗口管理服务的窗口状态实例与APP的Activity之间的映射;
3)由于WindowID机制的引入,Activity在打开和关闭时,操作更为简便和优化。
附图说明
图1显示为现有技术中的APP到窗口管理服务之间的通信通道示意图。
图2显示为现有技术中的窗口管理服务到APP之间的通信通道示意图。
图3显示为本发明的实施例公开的窗口管理服务与APP间的通信通道建立方法的流程示意图。
图4显示为本发明的实施例公开的窗口管理服务与APP间的通信通道建立方法中生成WindowID的流程示意图。
图5显示为使用本发明实施例公开的窗口管理服务与APP间的通信通道建立方法建立的APP到窗口管理服务之间的通信通道示意图。
图6显示为使用本发明实施例公开的窗口管理服务与APP间的通信通道建立方法建立的窗口管理服务到APP之间的通信通道示意图。
图7显示为本发明实施例公开的窗口管理服务与APP间的通信通道建立系统的结构示意图。
元件标号说明
S31~S33   步骤
S41~S44   步骤
700       窗口管理服务与APP间的通信通道建立系统
710       IWindow接口实例和Binder服务线程的创建单元
720       WindowID生成单元
730       窗口状态实例生成单元
740       哈希表生成单元
750       控制单元
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
请参阅图3至图7。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
为了完成一个APP只需一个Binder线程就能够处理窗口管理服务过来的请求和服务的功能,本发明的窗口管理服务与APP间的通信通道建立方法和系统在APP打开时就创建IWindow接口实例,同时创建了对应的Binder服务线程,用来监控窗口管理服务的请求和服务,这样在之后每打开一个Activity时,不再需要创建新的IWindow接口实例和对应的Binder服务线程,但是需要生成一个WindowID,每个Activity都对应不同的WindowID,并且通过sWindowSession远程调用接口,调用窗口管理服务的会话服务,将IWindow接口实例和WindowID传递到窗口管理服务中,窗口管理服务收到请求后,创建窗口状态实例来与Activity进行对应,保存IWindow接口实例和WindowID,并且建立WindowID和WindowState实例对应的哈希表sWindowMap。后续的APP中的各组件通过sWindowSession远程接口调用窗口管理服务中的会话服务时,都附带WindowID参数,会话服务线程通过该WindowID参数从哈希表sWindowMap中找到对应的窗口实例,来完成相应的功能和服务。由于窗口状态实例中保存了IWindow远程接口和WindowID,直接使用该远程接口请求APP提供的IWindow服务,所有的请求都要附带WindowID,应用IWindow对应的Binder服务线程收到请求后,通过WindowID找到对应的Activity,完成相应的功能和服务。
实施例1
本实施例公开了一种应用于安卓系统的窗口管理服务与APP间的通信通道建立方法,如图3所示,包括:
步骤S31,打开一个APP,获取sWindowSession接口,创建一个IWindow接口实例,同时创建一个对应的Binder服务线程,并静态保存IWindow接口实例:
在APP创建时,系统会通过远程调用接口调用窗口管理服务的会话开启函数。在会话开启函数中,窗口管理服务会创建会话服务的接口实例sWindowSession,并启动会话服务对应的Binder服务线程,之后将sWindowSession接口返回到APP中,APP以静态的方式保存sWindowSession接口。
如此,APP的各组件都可以通过sWindowSession接口访问窗口管理服务的会话服务,其中,会话服务主要提供对Activity在窗口管理服务中的映射窗口状态实例的管理和操作,包括窗口布局、输入法管理、墙纸等等,本发明只是针对APP和窗口管理服务之间的通信通路,关于会话服务的具体的功能就不再详述。
获取sWindowSession接口,建立从APP到窗口管理服务的会话服务之间的通信通路时,APP同时需要创建IWindow接口实例,创建IWindow对应的Binder服务线程,静态保存IWindow接口实例。此时还没有Activity创建,仅仅只需要保存IWindow接口实例,当Activity创建时,再使用IWindow接口实例。
步骤S32,针对一个APP,打开APP的一个Activity,生成一个对应的WindowID,并将Activity和WindowID添加到哈希表sActivityMap中,且哈希表sActivityMap保存至APP中:
由于安卓系统的现有方案是通过多IWindow接口实例来完成窗口管理服务到APP的Activity之间的映射,当只有一个IWindow接口实例时,需要建立标识WindowID来与Activity和窗口状态实例进行一一对应的操作。WindowID是通过随机数的方式生成的,具体流程如图4所示,包括:
步骤S41,打开一个Activity;
步骤S42,生成一个INT型的随机数;;
步骤S43,检索已经打开的Activity对应的WindowID,判断生成的随机数是否与已存在的WindowID相同:如果相同,则重新返回步骤S41,;如果不同,则跳转至步骤S44;
步骤S44,将该随机数作为Activity对应的WindowID,并将Activity和WindowID添加到哈希表sActivityMap中。
通过随机数的方式生成WindowID,生成随机数后,通过搜索已经存在的WindowID,确保WindowID不冲突,然后将Activity和WindowID添加到哈希表sActivityMap中,该哈希表在IWindow服务线程中会用到,用来完成窗口状态实例到Activity之间的映射。
步骤S33,通过sWindowSession接口,附带IWindow接口实例和Activity对应的WindowID调用窗口管理服务的会话服务,创建窗口状态实例,保存IWindow接口和WindowID到窗口状态实例中,将窗口状态实例和WindowID添加到哈希表sWindowMap中,并将哈希表sWindowMap保存至窗口管理服务:
当WindowID生成后,通过sWindowSession接口调用窗口管理服务的会话服务,附带IWindow接口实例和Activity对应的WindowID。会话服务收到该请求后,创建窗口状态实例,保存IWindow接口和WindowID到窗口状态实例中,将窗口状态实例和WindowID添加到哈希表sWindowMap中。其中,哈希表sWindowMap是窗口状态实例与WindowID的对应列表。此时APP完成了Activity的创建,WindowManagerService完成了窗口状态实例创建,APP中保存了Activity与WindowID对应的哈希表sActivityMap,WindowManagerService保存了WindowState与WindowID对应的哈希表sWindowMap,WindowState还保存了IWindow接口实例,可以访问APP提供的IWindow服务。
对于APP到窗口管理服务之间的通信通道,在现有系统中,APP各组件通过sWindowSession接口访问窗口管理服务的会话服务时,都需要附带IWindow接口实例,每个Activity都会创建对应IWindow接口实例,窗口管理服务的会话服务通过IWindow接口实例从哈希表sWindowMap中找到对应的WindowState实例,从而来完成相应的功能和服务。
在本实施例中,如图5所示,APP的所有组件共用一个IWindow接口实例,和一个Binder服务线程,通过sWindowSession接口访问窗口管理服务的会话服务时,都需要附带WindowID,窗口管理服务的会话服务通过WindowID从哈希表sWindowMap中找到对应的窗口状态实例,从而来完成响应的功能和服务。
对于窗口管理服务到APP之间的通信通道,在现有系统中,由于每个Activity都有对应IWindow接口实例和Binder服务线程,窗口管理服务的窗口状态实例组件与Activity是一一对应,直接通过IWindow接口就可以访问到Activity提供的服务,不需要进行任何分类操作。
在本实施例中,如图6所示,APP各组件共用一个IWindow接口实例,窗口管理服务的窗口状态实例组件访问IWindow接口实例提供的服务时,需要附带WindowID参数,APP层面的IWindow对应的Binder服务线程通过WindowID参数从哈希表sActivityMap中找到对应的Activity实例,从而完成相应的功能和服务。
在本实施例中,由于增加了WindowID机制,所以在关闭Activity时,需要释放WindowID。在APP关闭Activity时,需要从哈希表sActivityMap列表中删除该Activity和WindowID对应的组合,还需通过sWindowSession接口远程调用窗口管理服务的会话服务,附带对应的WindowID作为参数,会话服务收到该请求后,通过WindowID从哈希表sWindowMap中找到对应的窗口状态实例,进行相关的释放操作,最后从哈希表sWindowMap列表中删除该窗口状态实例和WindowID对应的组合,从而完成WindowID的释放工作。而现有系统每个Activity都有自己的IWindow接口和Binder服务线程,关闭一个Activity时,需要释放对应的IWindow接口以及关闭Binder服务线程,甚为繁琐。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
本实施例将窗口管理服务到APP之间的多个IWindow通信通路简化成一条通信通路,提高了系统效率;并引入了WindowID机制,通过WindowID机制来完成窗口管理服务的窗口状态实例与APP的Activity之间的映射;并且APP的Activity在打开和关闭时,操作更为简便和优化。
实施例2
本实施例还公开了一种应用于安卓系统的窗口管理服务与APP间的通信通道建立系统700,如图7所示,包括IWindow接口实例和Binder服务线程的创建单元710、WindowID生成单元720、窗口状态实例生成单元730、哈希表生成单元740和控制单元750。
IWindow接口实例和Binder服务线程的创建单元710用于根据APP创建IWindow接口实例和Binder服务线程。在APP创建时,获取sWindowSession接口,建立从APP到窗口管理服务的会话服务之间的通信通路,APP同时需要创建一个IWindow接口实例,创建IWindow对应的Binder服务线程,静态保存IWindow接口实例;即一个APP对应一个IWindow接口实例和一个Binder服务线程。
WindowID生成单元720用于针对同一个APP的不同Activity,生成对应的WindowID。当只有一个IWindow接口实例时,需要建立标识WindowID来与Activity和窗口状态实例进行一一对应的操作;且WindowID是通过随机数的方式生成的。
窗口状态实例生成单元730用于通过sWindowSession接口,附带IWindow接口实例和Activity对应的WindowID调用窗口管理服务的会话服务,创建窗口状态实例。当WindowID生成后,通过sWindowSession接口调用窗口管理服务的会话服务,附带IWindow接口实例和Activity对应的WindowID。会话服务收到该请求后,创建窗口状态实例,保存IWindow接口和WindowID到窗口状态实例中。
哈希表生成单元740用于生成哈希表sActivityMap和哈希表sWindowMap。其中哈希表sActivityMap是根据WindowID生成单元720而生成的Activity与WindowID的对应列表,其保存在APP中;哈希表sWindowMap是根据窗口状态实例生成单元730生成的窗口状态实例与WindowID的对应列表,其保存至窗口管理服务中。
控制单元750用于控制IWindow接口实例和Binder服务线程的创建单元710、WindowID生成单元720、窗口状态实例生成单元730和哈希表生成单元740,控制APP的创建,APP的Activity的打开和关闭,以及在关闭Activity时,控制哈希表生成单元740释放关闭Activity所对应的WindowID在哈希表sActivityMap和哈希表sWindowMap中的组合。
需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的单元,而非按照实际实施时的单元,其实际实施时各个单元可为一种随意的组合和改变,且其组件布局型态也可能更为复杂。
此外,为了突出本发明的创新部分,本实施例中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施例中不存在其它的单元。
并且,不难发现,本实施例为与第一实施例相对应的系统实施例,本实施例可与第一实施例互相配合实施。第一实施例中提到的相关技术细节在本实施例中依然有效,为了减少重复,这里不再赘述。相应地,本实施例中提到的相关技术细节也可应用在第一实施例中。
综上所述,本发明的窗口管理服务与APP间的通信通道建立方法和系统,窗口管理服务和APP之间引入了WindowID机制,将现有技术中的窗口管理服务和APP之间的多个IWindow通信通路简化成了一条通信通路,并且,通过WindowID机制完成了窗口管理服务的窗口状态实例与APP的Activity之间的映射。本发明的APP只需要建立一个IWindow的Binder服务线程,大量减少底层系统的Binder开销,增强系统效率,特别是在很多Activity打开的情况下;并且本发明通过WindowID机制更加方便简洁的完成窗口管理服务的窗口状态实例与APP的Activity之间的映射;而且由于WindowID机制的引入,Activity在打开和关闭时,操作更为简便和优化。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (10)

1.一种窗口管理服务与APP间的通信通道建立方法,应用于安卓系统,其特征在于,包括:
打开一个APP,获取sWindowSession接口,创建一个IWindow接口实例,同时创建一个对应的Binder服务线程,并静态保存IWindow接口实例;
针对所述APP,
打开所述APP的一个Activity,生成一个对应的WindowID,并将Activity和WindowID添加到哈希表sActivityMap中,且哈希表sActivityMap保存至所述APP中;
通过sWindowSession接口,附带IWindow接口实例和Activity对应的WindowID调用窗口管理服务的会话服务,创建窗口状态实例,保存IWindow接口实例和WindowID到窗口状态实例中,将窗口状态实例和WindowID添加到哈希表sWindowMap中,并将哈希表sWindowMap保存至窗口管理服务。
2.根据权利要求1所述的窗口管理服务与APP间的通信通道建立方法,其特征在于,与APP的Activity对应的WindowID是通过随机数的方式生成的。
3.根据权利要求2所述的窗口管理服务与APP间的通信通道建立方法,其特征在于,WindowID是整数数据类型的随机数。
4.根据权利要求2所述的窗口管理服务与APP间的通信通道建立方法,其特征在于,在通过随机数的方式生成WindowID时,判断生成的WindowID是否与APP中已存在的WindowID相同:如果相同,则重新通过随机数的方式生成新的WindowID;如果不相同,则将生成的WindowID作为Activity对应的WindowID。
5.根据权利要求1所述的窗口管理服务与APP间的通信通道建立方法,其特征在于,当窗口管理服务的窗口状态实例访问IWindow接口实例提供的服务时,要附带WindowID。
6.根据权利要求1所述的窗口管理服务与APP间的通信通道建立方法,其特征在于,哈希表sActivityMap中,Activity与WindowID是一一对应的;哈希表sWindowMap中,WindowID与窗口状态实例是一一对应的。
7.根据权利要求1所述的窗口管理服务与APP间的通信通道建立方法,其特征在于,在关闭所述APP的一个Activity时,从哈希表sActivityMap中删除该Activity和对应的WindowID;并通过sWindowSession接口,附带IWindow接口实例和Activity对应的WindowID调用窗口管理服务的会话服务,通过WindowID从哈希表sWindowMap中找到对应的窗口状态实例并释放。
8.一种窗口管理服务与APP间的通信通道建立系统,应用于安卓系统,其特征在于,包括:IWindow接口实例和Binder服务线程的创建单元、WindowID生成单元、窗口状态实例生成单元、哈希表生成单元和控制单元;
所述IWindow接口实例和Binder服务线程的创建单元用于根据APP创建IWindow接口实例和Binder服务线程;
所述WindowID生成单元用于针对同一个APP的不同Activity,生成对应的WindowID;
所述窗口状态实例生成单元用于通过sWindowSession接口,附带IWindow接口实例和Activity对应的WindowID调用窗口管理服务的会话服务,创建窗口状态实例;
所述哈希表生成单元用于生成哈希表sActivityMap和哈希表sWindowMap;
所述控制单元用于控制所述IWindow接口实例和Binder服务线程的创建单元、所述WindowID生成单元、所述窗口状态实例生成单元、所述哈希表生成单元。
9.根据权利要求8所述的窗口管理服务与APP间的通信通道建立系统,其特征在于,一个APP创建一个IWindow接口实例和一个Binder服务线程。
10.根据权利要求8所述的窗口管理服务与APP间的通信通道建立系统,其特征在于,哈希表sActivityMap是Activity与WindowID的对应列表,其保存在APP中;哈希表sWindowMap是窗口状态实例与WindowID的对应列表,其保存至窗口管理服务中。
CN201410729607.3A 2014-12-04 2014-12-04 一种窗口管理服务与app间的通信通道建立方法和系统 Active CN104486389B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410729607.3A CN104486389B (zh) 2014-12-04 2014-12-04 一种窗口管理服务与app间的通信通道建立方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410729607.3A CN104486389B (zh) 2014-12-04 2014-12-04 一种窗口管理服务与app间的通信通道建立方法和系统

Publications (2)

Publication Number Publication Date
CN104486389A true CN104486389A (zh) 2015-04-01
CN104486389B CN104486389B (zh) 2018-02-13

Family

ID=52760893

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410729607.3A Active CN104486389B (zh) 2014-12-04 2014-12-04 一种窗口管理服务与app间的通信通道建立方法和系统

Country Status (1)

Country Link
CN (1) CN104486389B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022627A (zh) * 2015-06-02 2015-11-04 上海斐讯数据通信技术有限公司 一种Android系统中View间的通信方法
CN105204951A (zh) * 2015-10-10 2015-12-30 上海斐讯数据通信技术有限公司 一种安卓系统中Activity间通信的方法和装置
CN106250165A (zh) * 2016-06-12 2016-12-21 杭州无量网络科技有限公司 应用程序组件管理方法及系统
CN109117279A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 电子装置及其限制进程间通信的方法、存储介质
CN109150951A (zh) * 2018-06-11 2019-01-04 阿里巴巴集团控股有限公司 Android系统Activity的启动方法和装置
CN109491715A (zh) * 2018-11-06 2019-03-19 深圳市风云实业有限公司 基于Windows NT的应用管理方法、装置及终端
CN110995829A (zh) * 2019-11-29 2020-04-10 广州市百果园信息技术有限公司 实例调用方法、装置及计算机存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103558959A (zh) * 2013-10-31 2014-02-05 青岛海信移动通信技术股份有限公司 一种应用于Android平台的显示窗口的方法和装置
CN103617078A (zh) * 2013-11-22 2014-03-05 北京奇虎科技有限公司 活动组件的管理方法及装置
CN103902390A (zh) * 2014-03-12 2014-07-02 深圳创维-Rgb电子有限公司 基于Android的应用层的进程间通信方法及基础应用通信系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103558959A (zh) * 2013-10-31 2014-02-05 青岛海信移动通信技术股份有限公司 一种应用于Android平台的显示窗口的方法和装置
CN103617078A (zh) * 2013-11-22 2014-03-05 北京奇虎科技有限公司 活动组件的管理方法及装置
CN103902390A (zh) * 2014-03-12 2014-07-02 深圳创维-Rgb电子有限公司 基于Android的应用层的进程间通信方法及基础应用通信系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
夏德冰等: "Android 应用中一种Activity 窗口管理系统", 《计 算 机 系 统 应 用》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022627A (zh) * 2015-06-02 2015-11-04 上海斐讯数据通信技术有限公司 一种Android系统中View间的通信方法
CN105022627B (zh) * 2015-06-02 2018-04-06 上海斐讯数据通信技术有限公司 一种Android系统中View间的通信方法
CN105204951A (zh) * 2015-10-10 2015-12-30 上海斐讯数据通信技术有限公司 一种安卓系统中Activity间通信的方法和装置
CN106250165A (zh) * 2016-06-12 2016-12-21 杭州无量网络科技有限公司 应用程序组件管理方法及系统
CN109150951A (zh) * 2018-06-11 2019-01-04 阿里巴巴集团控股有限公司 Android系统Activity的启动方法和装置
CN109117279A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 电子装置及其限制进程间通信的方法、存储介质
CN109117279B (zh) * 2018-06-29 2020-10-02 Oppo(重庆)智能科技有限公司 电子装置及其限制进程间通信的方法、存储介质
CN109491715A (zh) * 2018-11-06 2019-03-19 深圳市风云实业有限公司 基于Windows NT的应用管理方法、装置及终端
CN109491715B (zh) * 2018-11-06 2021-10-22 深圳市风云实业有限公司 基于Windows NT的应用管理方法、装置及终端
CN110995829A (zh) * 2019-11-29 2020-04-10 广州市百果园信息技术有限公司 实例调用方法、装置及计算机存储介质
CN110995829B (zh) * 2019-11-29 2022-07-22 广州市百果园信息技术有限公司 实例调用方法、装置及计算机存储介质

Also Published As

Publication number Publication date
CN104486389B (zh) 2018-02-13

Similar Documents

Publication Publication Date Title
CN104486389A (zh) 一种窗口管理服务与app间的通信通道建立方法和系统
EP3179673A1 (en) Energy-saving control method, management server and network device
EP3226468A1 (en) Service acceleration method and apparatus
US20190132752A1 (en) Load Migration Method, Apparatus, and System
EP2800306A1 (en) Rule set arrangement processing method and apparatus, and trunking data system
EP3534578B1 (en) Resource adjustment method, device and system
CN114915593B (zh) 基于Redis的流量控制方法、装置、电子设备及存储介质
CN111090495A (zh) 节点管理方法、装置、设备、存储介质和系统
CN104243608A (zh) 一种通信方法、云管理服务器及虚拟交换机
CN108512782A (zh) 访问控制列表分组调整方法、网络设备和系统
CN103780428A (zh) 应用于云架构的集中式资源管理方法及系统
CN101083665A (zh) 限制会话数的方法及装置
CN109739634A (zh) 一种原子任务执行方法及装置
CN110795202B (zh) 一种虚拟化集群资源管理系统的资源分配方法以及装置
CN105933270B (zh) 一种云加密机的处理方法及装置
CN103685586A (zh) 一种实现地址共享的方法、装置和系统
CN105743674A (zh) 虚拟网络功能管理方法、装置及系统
CN104185096A (zh) 一种onu注册授权方法及系统
CN104506948B (zh) 一种中间件与用户界面之间的消息传递方法和系统
CN105447384B (zh) 一种反监控的方法、系统及移动终端
US20160234258A1 (en) Minimizing productivity loss in a collaborative sharing environment
CN103108242A (zh) 一种解决智能电视视频类应用和电视视频冲突的方法
CN101694661A (zh) 一种统计报表生成方法、装置和统计服务器
CN104410536A (zh) 一种数据业务配置方法、系统及onu设备
WO2017114056A1 (zh) 基于面向服务架构soa的数据处理方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20201104

Address after: 318015 no.2-3167, zone a, Nonggang City, no.2388, Donghuan Avenue, Hongjia street, Jiaojiang District, Taizhou City, Zhejiang Province

Patentee after: Taizhou Jiji Intellectual Property Operation Co.,Ltd.

Address before: 201616 Shanghai city Songjiang District Sixian Road No. 3666

Patentee before: Phicomm (Shanghai) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240218

Address after: Room 1401-4, Building B, Huihao Tree Center, Keji 3rd Road, High tech Zone, Xi'an City, Shaanxi Province, 710075

Patentee after: Shaanxi Shaduofa Information Technology Co.,Ltd.

Country or region after: China

Address before: 318015 no.2-3167, area a, nonggangcheng, 2388 Donghuan Avenue, Hongjia street, Jiaojiang District, Taizhou City, Zhejiang Province

Patentee before: Taizhou Jiji Intellectual Property Operation Co.,Ltd.

Country or region before: China