CN108182121B - 一种Android中控大屏系统模块间通信方法及系统 - Google Patents
一种Android中控大屏系统模块间通信方法及系统 Download PDFInfo
- Publication number
- CN108182121B CN108182121B CN201711468724.9A CN201711468724A CN108182121B CN 108182121 B CN108182121 B CN 108182121B CN 201711468724 A CN201711468724 A CN 201711468724A CN 108182121 B CN108182121 B CN 108182121B
- Authority
- CN
- China
- Prior art keywords
- module
- target
- message
- target module
- initiating
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种Android中控大屏系统模块间通信方法及系统,该方法包括以下步骤:发起模块启动AgentService,通过AgentService向消息中转模块发送注册请求;消息中转模块为发起模块进行注册后,建立与发起模块的连接;发起模块通过AgentService将待发送的消息数据和目标模块的ID组合发送到消息中转模块;消息中转模块对目标模块的ID组合进行拆解后,得到多个目标模块ID,获取每个目标模块ID所对应的aidl类型的回调接口;消息中转模块将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块。本发明可以更加灵活地处理和发送消息数据,使用便捷,稳定性好,安全性高,而且更加智能,可广泛应用于汽车通信行业中。
Description
技术领域
本发明涉及通信技术领域,特别是涉及一种Android中控大屏系统模块间通信方法及系统。
背景技术
Android中控大屏系统的模块或进程间经常需要进行通信,例如进行数据传输、指令传达、状态通知等。目前,Android中控大屏系统的模块之间的通信方式主要有广播通信方式和aidl通信方式。广播通信方式是将通信数据发送到其它所有模块,并没有针对性,广播对象不可控,而且广播通信结果也不可知,稳定性差。aidl通信方式较为复杂,开发难度较大,而且模块之间直接通过aidl通信方式进行通信,还存在较多漏洞,无法保障安全通信。总的来说,目前Android中控大屏系统模块间通信存在使用不便、消息容错性差、稳定性差、不安全等问题。
发明内容
为了解决上述的技术问题,本发明的目的是提供一种Android中控大屏系统模块间通信方法及系统。
本发明解决其技术问题所采用的技术方案是:
一种Android中控大屏系统模块间通信方法,包括以下步骤:
发起模块启动AgentService,通过AgentService向消息中转模块发送注册请求;
消息中转模块根据发起模块的注册请求,为发起模块进行注册后,建立与发起模块的连接;
发起模块通过AgentService将待发送的消息数据和目标模块的ID组合发送到消息中转模块;
消息中转模块对目标模块的ID组合进行拆解后,得到多个目标模块ID,进而从第一哈希表中遍历获取每个目标模块ID所对应的aidl类型的回调接口;
消息中转模块将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块;
其中,所述发起模块和目标模块均为Android中控大屏系统中获得AgentService授权的系统模块,所述消息中转模块为Android中控大屏系统内设的模块。
进一步,所述第一哈希表是通过以下方式建立的:
针对进行注册的每个系统模块,消息中转模块将其ID以及该系统模块对应的aidl类型的回调接口存储到第一哈希表中。
进一步,所述消息中转模块将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块的步骤,具体包括:
消息中转模块将每个目标模块的消息数据生成一数据集合,并与该目标模块的ID关联后存储到第二哈希表中;
消息中转模块根据预设时间间隔,遍历第二哈希表,依次读取每个目标模块ID对应的消息数据后,通过该目标模块ID对应的aidl类型的回调接口,将消息数据发送到对应的目标模块。
进一步,当消息中转模块从第一哈希表中获取不到目标模块ID所对应的aidl类型的回调接口时,执行以下步骤:
通知对应的目标模块进行注册,并将消息数据生成一数据集合,并与该目标模块的ID关联后存储到第二哈希表;
在判断该目标模块完成注册后,遍历第二哈希表,读取对应的消息数据后,发送到该目标模块。
进一步,所述判断该目标模块完成注册的步骤中,是通过遍历第一哈希表,当从第一哈希表中读取到与该目标模块的ID对应的aidl类型的回调接口时,判断该目标模块完成注册。
进一步,当目标模块被通知进行注册时,通过执行以下步骤进行注册:
目标模块启动AgentService,通过AgentService向消息中转模块发送注册请求;
消息中转模块根据目标模块的注册请求,为目标模块进行注册后,建立与目标模块的连接,并将目标模块的ID和aidl类型的回调接口存储到第一哈希表中。
进一步,还包括以下步骤:
目标模块接收到消息中转模块发送消息数据的信息时,启动AgentService,与消息中转模块建立连接后,通过AgentService依次接收消息中转模块发送的消息数据;
目标模块在开始接收消息数据时,进行计时,并在到达预设计时时间后,判断与消息中转模块之间是否还有数据交互,若没有,则结束计时,并向消息中转模块发送注销请求,同时销毁AgentService,反之,重新进行计时判断。
进一步,还包括以下步骤:
消息中转模块接收到系统模块的注销请求时,对系统模块进行注销,断开与系统模块的连接,并将其ID以及该系统模块对应的aidl类型的回调接口从第一哈希表中删除。
本发明解决其技术问题所采用的另一技术方案是:
一种Android中控大屏系统模块间通信系统,用于实现Android中控大屏系统的发起模块和目标模块之间的通信,包括设置在Android中控大屏系统的消息中转模块,所述消息中转模块用于:
接收发起模块在启动AgentService后,通过AgentService所发送的注册请求;
根据发起模块的注册请求,为发起模块进行注册后,建立与发起模块的连接;
接收发起模块通过AgentService发送的待发送的消息数据和目标模块的ID组合;
对所接收的目标模块的ID组合进行拆解后,得到多个目标模块ID,进而从第一哈希表中遍历获取每个目标模块ID所对应的aidl类型的回调接口;
将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块;
其中,所述发起模块和目标模块均为Android中控大屏系统中获得AgentService授权的系统模块器。
进一步,所述消息中转模块包括注册接口、注销接口和数据接口;
所述注册接口用于:接收发起模块在启动AgentService后,通过AgentService所发送的注册请求;以及,根据发起模块的注册请求,为发起模块进行注册后,建立与发起模块的连接;
所述注销接口用于:在接收到系统模块的注销请求时,对系统模块进行注销,断开与系统模块的连接;
所述数据接口用于:
接收发起模块通过AgentService发送的待发送的消息数据和目标模块的ID组合;
对所接收的目标模块的ID组合进行拆解后,得到多个目标模块ID,进而从第一哈希表中遍历获取每个目标模块ID所对应的aidl类型的回调接口;
将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块。
本发明方法、系统的有益效果是:本发明通过Android中控大屏系统内设的消息中转模块来进行Android中控大屏系统的系统模块之间的消息数据转发,消息中转模块来实现Android中控大屏系统模块之间的通信,可以更加灵活地处理和发送消息数据,使用便捷,稳定性好,安全性高,而且更加智能。
附图说明
图1是本发明的一种Android中控大屏系统模块间通信方法的流程图;
图2是本发明的一种Android中控大屏系统模块间通信系统的结构框图。
具体实施方式
方法实施例
参照图1,本实施例提供了一种Android中控大屏系统模块间通信方法,包括以下步骤:
S1、发起模块启动AgentService,通过AgentService向消息中转模块发送注册请求;
S2、消息中转模块根据发起模块的注册请求,为发起模块进行注册后,建立与发起模块的连接;
S3、发起模块通过AgentService将待发送的消息数据和目标模块的ID组合发送到消息中转模块;
S4、消息中转模块对目标模块的ID组合进行拆解后,得到多个目标模块ID,进而从第一哈希表中遍历获取每个目标模块ID所对应的aidl类型的回调接口;
S5、消息中转模块将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块;
其中,所述发起模块和目标模块均为Android中控大屏系统中获得AgentService授权的系统模块,所述消息中转模块为Android中控大屏系统内设的模块,所述发起模块和目标模块均与消息中转模块连接。
Android中控大屏系统具有很多模块,本发明中,只对一些可能进行数据交互的模块进行AgentService授权,在通信过程中,发起模块或目标模块启动AgentService时,需要根据AgentService授权进行签名识别,只有签名与AgentService授权相同的模块才能启动它,保证了本方案的安全性。
本方法通过Android中控大屏系统内设的消息中转模块来进行Android中控大屏系统的系统模块之间的消息数据转发,将模块与模块之间的通信,转换为模块-服务器-模块之间的通信,构建了客户端-服务器端-客户端这种C-S-C架构,消息中转模块来实现Android中控大屏系统模块之间的通信,可以更加灵活地处理和发送消息数据,使用便捷,稳定性好,安全性高,而且更加智能。
进一步作为优选的实施方式,所述第一哈希表是通过以下方式建立的:
针对进行注册的每个系统模块,消息中转模块将其ID以及该系统模块对应的aidl类型的回调接口存储到第一哈希表中。
进一步作为优选的实施方式,所述步骤S5,具体包括:
S51、消息中转模块将每个目标模块的消息数据生成一数据集合,并与该目标模块的ID关联后存储到第二哈希表中;
S52、消息中转模块根据预设时间间隔,遍历第二哈希表,依次读取每个目标模块ID对应的消息数据后,通过该目标模块ID对应的aidl类型的回调接口,将消息数据发送到对应的目标模块。遍历第二哈希表时,依次读取每个目标模块ID对应的数据集合,获得对应的消息数据。
本步骤中,通过将消息数据存储在第二哈希表中,再按照预设时间间隔,遍历该第二哈希表,实现将消息数据转发到对应的目标模块,这种方式,发送消息数据时,实际采用的是消息队列机制,即按照设定的预设时间间隔,向目标模块发送消息队列,通过这种方式进行消息数据的发送,可以保证消息数据传输的有序发送,避免拥堵。
进一步作为优选的实施方式,所述步骤S4中,当消息中转模块从第一哈希表中获取不到目标模块ID所对应的aidl类型的回调接口时,直接执行以下步骤:
通知对应的目标模块进行注册,并将消息数据生成一数据集合,并与该目标模块的ID关联后存储到第二哈希表;
在判断该目标模块完成注册后,遍历第二哈希表,读取对应的消息数据后,发送到该目标模块。
本步骤是与S51和S52的详细步骤对应的详细发送步骤。步骤S4中获取不到目标模块ID所对应的aidl类型的回调接口时,无法直接执行步骤S5进行消息数据的转发,因此,执行本步骤通知目标模块进行注册后,再进行数据转发。
进一步作为优选的实施方式,所述判断该目标模块完成注册的步骤中,是通过遍历第一哈希表,当从第一哈希表中读取到与该目标模块的ID对应的aidl类型的回调接口时,判断该目标模块完成注册。
进一步作为优选的实施方式,当目标模块被通知进行注册时,通过执行以下步骤进行注册:
目标模块启动AgentService,通过AgentService向消息中转模块发送注册请求;
消息中转模块根据目标模块的注册请求,为目标模块进行注册后,建立与目标模块的连接,并将目标模块的ID和aidl类型的回调接口存储到第一哈希表中。
由此可见,本发明中,发起模块与目标模块均可以向消息中转模块发送注册请求,在注册时,消息中转模块进行对应的注册与模块建立连接后,将对应模块的ID和aidl类型的回调接口存储到第一哈希表中,即存储与模块之间的连接信息,从而后面直接从第一哈希表中读取这些连接信息,然后进行数据转发。
进一步作为优选的实施方式,还包括以下步骤:
目标模块接收到消息中转模块发送消息数据的信息时,启动AgentService,与消息中转模块建立连接后,通过AgentService依次接收消息中转模块发送的消息数据;
目标模块在开始接收消息数据时,进行计时,并在到达预设计时时间后,判断与消息中转模块之间是否还有数据交互,若没有,则结束计时,并向消息中转模块发送注销请求,同时销毁AgentService,反之,重新进行计时判断。预设计时时间在本实施例中设置为5分钟,在该时间间隔内,目标模块与消息中转模块之间没有接收/发送数据的数据交互,则向消息中转模块发送注销请求,注销与消息中转模块的连接,减少对系统资源的占用,避免降低本方法的执行速度。
进一步作为优选的实施方式,还包括以下步骤:
消息中转模块接收到系统模块的注销请求时,对系统模块进行注销,断开与系统模块的连接,并将其ID以及该系统模块对应的aidl类型的回调接口从第一哈希表中删除。
这里系统模块包括前面提到的发起模块和目标模块,在前述步骤中,目标模块向消息中转模块发起注销请求,则,消息中转模块对目标模块进行注销,断开与目标模块的连接,同时将目标模块的ID以及该目标模块对应的aidl类型的回调接口从第一哈希表中删除。相同的,发起模块完成数据发送后,没有数据接收需求时,也可以同样向消息中转模块发送注销请求,同时销毁AgentService。这种情况下,消息中转模块接收到发起模块的注销请求,从而对发起模块进行注销,断开与发起模块的连接,同时将发起模块的ID以及该发起模块对应的aidl类型的回调接口从第一哈希表中删除。
消息中转模块在接收到系统模块的注册请求时,进行对应的注册并将系统模块的ID以及该系统模块对应的aidl类型的回调接口存储到第一哈希表中,便于后续进行数据发送时,直接根据已经建立的连接关系进行数据发送。而在接收到系统模块的注销请求时,进行对应的注销并将系统模块的ID以及该系统模块对应的aidl类型的回调接口从第一哈希表中删除,断开与系统模块的连接,从而释放系统资源。
系统实施例
参照图2,本实施例提供了一种Android中控大屏系统模块间通信系统,用于实现Android中控大屏系统的发起模块和目标模块之间的通信,包括设置在Android中控大屏系统的消息中转模块,所述消息中转模块用于:
接收发起模块在启动AgentService后,通过AgentService所发送的注册请求;
根据发起模块的注册请求,为发起模块进行注册后,建立与发起模块的连接;
接收发起模块通过AgentService发送的待发送的消息数据和目标模块的ID组合;
对所接收的目标模块的ID组合进行拆解后,得到多个目标模块ID,进而从第一哈希表中遍历获取每个目标模块ID所对应的aidl类型的回调接口;
将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块;
其中,所述发起模块和目标模块均为Android中控大屏系统中获得AgentService授权的系统模块器。
进一步作为优选的实施方式,所述消息中转模块包括注册接口、注销接口和数据接口;
所述注册接口用于:接收发起模块在启动AgentService后,通过AgentService所发送的注册请求;以及,根据发起模块的注册请求,为发起模块进行注册后,建立与发起模块的连接;
所述注销接口用于:在接收到系统模块的注销请求时,对系统模块进行注销,断开与系统模块的连接;
所述数据接口用于:
接收发起模块通过AgentService发送的待发送的消息数据和目标模块的ID组合;
对所接收的目标模块的ID组合进行拆解后,得到多个目标模块ID,进而从第一哈希表中遍历获取每个目标模块ID所对应的aidl类型的回调接口;
将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块。
具体的,所述注册接口还用于:针对进行注册的每个系统模块,将其ID以及该系统模块对应的aidl类型的回调接口存储到第一哈希表中。
所述注销接口还用于:将系统模块ID以及该系统模块对应的aidl类型的回调接口从第一哈希表中删除;
本实施例的Android中控大屏系统模块间通信系统,可执行本发明方法实施例所提供的Android中控大屏系统模块间通信方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。
本系统一详细实施例
参照图2所示,一种Android中控大屏系统模块间通信系统,用于实现Android中控大屏系统的发起模块和目标模块之间的通信,包括设置在Android中控大屏系统的消息中转模块,本实施例中,将发起模块和目标模块统称为消息发送/接收模块,也称为客户端模块,消息中转模块和消息发送/接收模块的具体情况如下:
1.消息中转模块
负责接收每个模块的消息并转发给目标模块。本发明中,其功能相当于一个数据转发服务器,此模块是一个独立运行的服务进程,由一个监听系统开机启动广播:android.intent.action.BOOT_COMPLETED来触发开机自启动的Service构成,并在此Service的被绑定后返回一个自定义的Android Interface Define Language IBinder对象,并在该IBinder对象对应的aidl文件中提供3个接口,分别为:
(1)注册接口
供其他模块注册,以建立其他模块和本消息中转模块的连接。该接口提供2个参数,一个是注册过来的模块的id,在本方案中为String类型的Android应用程序包名:packageName;另一个参数为aidl类型的回调接口,并在该回调接口中定义回调接口:onReceive(String data),用于向注册的目标模块转发消息数据。
其中,用一个HashMap存放注册过来的其他模块的aidl类型的回调接口,存放方式为key-value形式:<模块id,aidl类型的回调接口>,每次注册,则覆盖掉原有模块对应的aidl类型的回调接口,以保证只持有一个,避免重复。为这个HashMap取名:模块HashMap。模块HashMap即为前述实施例的第一哈希表。
(2)注销接口
与注册接口相反,该接口供其他模块注销与本消息中转模块的连接。该接口根据1个参数进行操作,即注册过来的模块的id,在本方案中为String类型的Android应用程序包名:packageName。
在该接口中,把对应模块id的aidl类型的回调接口从注册接口中说明的模块HashMap中移除。
(3)数据接口
负责接收注册模块所发送过来的消息数据,提供2个参数,一个为所要转发的目标模块的id组合,这是由多个目标模块id按照一定规则组成的组合,如在本案例中以特定的符号:“<-*->”来组合,即:模块id<-*->模块id<-*->模块id……,以此类推或其他形式的组合方式,在本方案中为String类型的Android应用程序包名:packageName的组合。另一个参数为String类型的数据data。
在该接口中,先把目标模块id的组合进行拆解,即按照约定的规则,本案例中以符号:“<-*->”来分割目标模块id的组合,得到每个单独的目标模块id构成的数组。然后再遍历的从模块HashMap中取出每个目标模块id所对应的aidl类型的回调接口,并把数据data依次从这个aidl类型的回调接口中发送到相应的目标模块。
其中,若模块HashMap中获取不到目标模块id对应的aidl类型的回调接口,则说明该id的目标模块没有注册,这时主动通知它发起注册,缓存该数据data并等待它注册完成后再通过注册后的aidl类型的回调接口把数据data发送给它。其中,主动通知目标模块发起注册和缓存数据data的过程为:
在每个目标模块设计有一个Service,取名为AgentService,作为代理负责为其所在的模块注册/注销到消息中转模块。其中,注册到消息中转模块在AgentService被创建的时候执行,从消息中转模块注销在AgentService被销毁的时候执行。当消息中转模块在其数据接口中找不到目标模块的aidl类型的回调接口时,通过设置ComponentName对象的packageName为目标模块id,className为AgentService所在模块完整包名的Intent来启动AgentService从而在其onCreate函数中执行注册到消息中转模块的动作。数据缓存的由一个集合来存放,一个目标模块对应一个集合,并以<key,value>的形式:<目标模块id,数据缓存集合>保存每一个目标模块的数据缓存集合到一个HashMap中,本方案中取名为DataHashMap。把同一个目标模块id的所有数据data都存放在同一个集合中,在目标模块完成注册后,遍历数据缓存集合把缓存数据逐一发送到目标模块。其中,判断目标模块完成注册的方法是:在消息中转模块的注册接口中,用其参数中的模块id从模块HashMap中获取该模块id对应的aidl类型的回调接口,若获取到aidl类型的回调接口不为null,则判断目标模块完成注册。
2.消息发送/接收模块,也称客户端模块,主要集成在Android中控大屏系统的客户端,主要包括两部分:
(1)代理服务AgentService
即上文消息中转模块中所描述的作为代理负责为其所在的模块注册/注销到消息中转模块的一个Android Service组件,具体见上文中所述。补充说明,为了安全起见,防止该AgentService被随意启动,把该Service的保护级别设置为签名级别,这样只有相同签名的模块才能启动它。进一步的,该代理服务AgentService不是自启动的,当作为消息数据发起者时,若判断与消息中转模块建立的连接为空,则启动该代理服务AgentService;当作为消息数据接收者时,该代理服务AgentService只有在被消息中转模块触发时才启动。保证了服务在需要的时候才存在,且启动后开始倒计时一定的时间(本案例中采用5分钟),在规定的倒计时时间内,如果没有收/发消息,则倒计时结束后停止并销毁该代理服务AgentService;如果有收/发消息,则重新开始倒计时,以此达到尽量少占用系统资源的目的。
(2)与消息中转模块建立的连接服务
代理服务AgentService启动后建立与消息中转模块建立的连接服务并得到与服务器的建立的连接。在连接服务中发起向消息中转模块注册/注销,用与服务器建立的连接发送/接收数据。同消息中转模块所述,在此处定义了与消息中转模块一模一样的aidl接口,并在bind到消息中转模块时返回aidl接口对象。消息的发送/接收逻辑跟消息中转模块一致。进一步的,客户端模块在转发消息到消息中转模块、消息中转模块转发数据到目标客户端模块时均采用队列的形式,即把消息数据存放在队列中,转发消息数据的时候按照固定间隔(本案例中采用间隔时间5毫秒)依次从队列中取出消息再转发,从而达到消息有序发送的目的。
综上可知,本系统具有如下优点:
1、占用系统资源小,因为当有消息传输时才自动建立,传输完毕后倒计时断开连接、释放资源;
2、安全,通过进行AgentService授权,在模块启动AgentService时,进行签名识别,拒绝未授权模块连接,提高通信安全性;
3、保证了消息数据传输的有序、避免拥堵;
4、集成和使用起来便捷。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变型或替换均包含在本申请权利要求所限定的范围内。
Claims (9)
1.一种Android中控大屏系统模块间通信方法,其特征在于,包括以下步骤:
发起模块启动AgentService,通过AgentService向消息中转模块发送注册请求;
消息中转模块根据发起模块的注册请求,为发起模块进行注册后,建立与发起模块的连接;
发起模块通过AgentService将待发送的消息数据和目标模块的ID组合发送到消息中转模块;
消息中转模块对目标模块的ID组合进行拆解后,得到多个目标模块ID,进而从第一哈希表中遍历获取每个目标模块ID所对应的aidl类型的回调接口;
消息中转模块将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块;
所述消息中转模块将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块的步骤,具体包括:
消息中转模块将每个目标模块的消息数据生成一数据集合,并与该目标模块的ID关联后存储到第二哈希表中;
消息中转模块根据预设时间间隔,遍历第二哈希表,依次读取每个目标模块ID对应的消息数据后,通过该目标模块ID对应的aidl类型的回调接口,将消息数据发送到对应的目标模块;
其中,所述发起模块和目标模块均为Android中控大屏系统中获得AgentService授权的系统模块,所述消息中转模块为Android中控大屏系统内设的模块。
2.根据权利要求1所述的一种Android中控大屏系统模块间通信方法,其特征在于,所述第一哈希表是通过以下方式建立的:
针对进行注册的每个系统模块,消息中转模块将其ID以及该系统模块对应的aidl类型的回调接口存储到第一哈希表中。
3.根据权利要求2所述的一种Android中控大屏系统模块间通信方法,其特征在于,当消息中转模块从第一哈希表中获取不到目标模块ID所对应的aidl类型的回调接口时,执行以下步骤:
通知对应的目标模块进行注册,并将消息数据生成一数据集合,并与该目标模块的ID关联后存储到第二哈希表;
在判断该目标模块完成注册后,遍历第二哈希表,读取对应的消息数据后,发送到该目标模块。
4.根据权利要求3所述的一种Android中控大屏系统模块间通信方法,其特征在于,所述判断该目标模块完成注册的步骤中,是通过遍历第一哈希表,当从第一哈希表中读取到与该目标模块的ID对应的aidl类型的回调接口时,判断该目标模块完成注册。
5.根据权利要求3所述的一种Android中控大屏系统模块间通信方法,其特征在于,当目标模块被通知进行注册时,通过执行以下步骤进行注册:
目标模块启动AgentService,通过AgentService向消息中转模块发送注册请求;
消息中转模块根据目标模块的注册请求,为目标模块进行注册后,建立与目标模块的连接,并将目标模块的ID和aidl类型的回调接口存储到第一哈希表中。
6.根据权利要求1所述的一种Android中控大屏系统模块间通信方法,其特征在于,还包括以下步骤:
目标模块接收到消息中转模块发送消息数据的信息时,启动AgentService,与消息中转模块建立连接后,通过AgentService依次接收消息中转模块发送的消息数据;
目标模块在开始接收消息数据时,进行计时,并在到达预设计时时间后,判断与消息中转模块之间是否还有数据交互,若没有,则结束计时,并向消息中转模块发送注销请求,同时销毁AgentService,反之,重新进行计时判断。
7.根据权利要求2所述的一种Android中控大屏系统模块间通信方法,其特征在于,还包括以下步骤:
消息中转模块接收到系统模块的注销请求时,对系统模块进行注销,断开与系统模块的连接,并将其ID以及该系统模块对应的aidl类型的回调接口从第一哈希表中删除。
8.一种Android中控大屏系统模块间通信系统,用于实现Android中控大屏系统的发起模块和目标模块之间的通信,其特征在于,包括设置在Android中控大屏系统的消息中转模块,所述消息中转模块用于:
接收发起模块在启动AgentService后,通过AgentService所发送的注册请求;
根据发起模块的注册请求,为发起模块进行注册后,建立与发起模块的连接;
接收发起模块通过AgentService发送的待发送的消息数据和目标模块的ID组合;
对所接收的目标模块的ID组合进行拆解后,得到多个目标模块ID,进而从第一哈希表中遍历获取每个目标模块ID所对应的aidl类型的回调接口;
将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块;
所述将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块的步骤,具体包括:
消息中转模块将每个目标模块的消息数据生成一数据集合,并与该目标模块的ID关联后存储到第二哈希表中;
消息中转模块根据预设时间间隔,遍历第二哈希表,依次读取每个目标模块ID对应的消息数据后,通过该目标模块ID对应的aidl类型的回调接口,将消息数据发送到对应的目标模块;
其中,所述发起模块和目标模块均为Android中控大屏系统中获得AgentService授权的系统模块器。
9.根据权利要求8所述的一种Android中控大屏系统模块间通信系统,其特征在于,所述消息中转模块包括注册接口、注销接口和数据接口;
所述注册接口用于:接收发起模块在启动AgentService后,通过AgentService所发送的注册请求;以及,根据发起模块的注册请求,为发起模块进行注册后,建立与发起模块的连接;
所述注销接口用于:在接收到系统模块的注销请求时,对系统模块进行注销,断开与系统模块的连接;
所述数据接口用于:
接收发起模块通过AgentService发送的待发送的消息数据和目标模块的ID组合;
对所接收的目标模块的ID组合进行拆解后,得到多个目标模块ID,进而从第一哈希表中遍历获取每个目标模块ID所对应的aidl类型的回调接口;
将待发送的消息数据依次从获取的aidl类型的回调接口发送到对应的目标模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711468724.9A CN108182121B (zh) | 2017-12-29 | 2017-12-29 | 一种Android中控大屏系统模块间通信方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711468724.9A CN108182121B (zh) | 2017-12-29 | 2017-12-29 | 一种Android中控大屏系统模块间通信方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108182121A CN108182121A (zh) | 2018-06-19 |
CN108182121B true CN108182121B (zh) | 2020-10-20 |
Family
ID=62548694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711468724.9A Active CN108182121B (zh) | 2017-12-29 | 2017-12-29 | 一种Android中控大屏系统模块间通信方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108182121B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189584B (zh) * | 2018-07-05 | 2021-02-19 | 北京三快在线科技有限公司 | 应用程序之间的通信方法、装置、电子设备及存储介质 |
CN109491804A (zh) * | 2018-10-11 | 2019-03-19 | 视联动力信息技术股份有限公司 | 消息传输方法和装置 |
CN109344164B (zh) * | 2018-10-31 | 2021-03-19 | 迈普通信技术股份有限公司 | 数据存储方法及装置 |
CN109656624A (zh) * | 2018-11-13 | 2019-04-19 | 浙江合众新能源汽车有限公司 | 一种安卓中控大屏的启动与关机方法及装置 |
CN110569130B (zh) * | 2019-07-29 | 2021-12-14 | 华为技术有限公司 | 一种跨进程通信方法、装置及设备 |
CN110941812B (zh) * | 2019-10-23 | 2022-07-12 | 天津智融创新科技发展有限公司 | 一种特权功能调用方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176853A (zh) * | 2011-12-23 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 实现多应用间通信的方法及系统 |
CN103561060A (zh) * | 2013-10-17 | 2014-02-05 | 北京京东尚科信息技术有限公司 | 一种多线程环境下的通信链接方法及中转服务器 |
CN103701695A (zh) * | 2013-12-26 | 2014-04-02 | 四川九洲电器集团有限责任公司 | 一种智能家居网关控制系统 |
CN104317626A (zh) * | 2014-11-13 | 2015-01-28 | 北京奇虎科技有限公司 | 终端设备中应用软件权限控制的方法、装置和系统 |
CN107515793A (zh) * | 2017-08-22 | 2017-12-26 | 四川长虹电器股份有限公司 | 一种支持消息机制的模块通信方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9075643B2 (en) * | 2012-01-23 | 2015-07-07 | International Business Machines Corporation | Automatically selecting optimal transport protocol in a cloud computing environment |
-
2017
- 2017-12-29 CN CN201711468724.9A patent/CN108182121B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103176853A (zh) * | 2011-12-23 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 实现多应用间通信的方法及系统 |
CN103561060A (zh) * | 2013-10-17 | 2014-02-05 | 北京京东尚科信息技术有限公司 | 一种多线程环境下的通信链接方法及中转服务器 |
CN103701695A (zh) * | 2013-12-26 | 2014-04-02 | 四川九洲电器集团有限责任公司 | 一种智能家居网关控制系统 |
CN104317626A (zh) * | 2014-11-13 | 2015-01-28 | 北京奇虎科技有限公司 | 终端设备中应用软件权限控制的方法、装置和系统 |
CN107515793A (zh) * | 2017-08-22 | 2017-12-26 | 四川长虹电器股份有限公司 | 一种支持消息机制的模块通信方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108182121A (zh) | 2018-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108182121B (zh) | 一种Android中控大屏系统模块间通信方法及系统 | |
US20230078546A1 (en) | Data transmission for service integration between a virtual private cloud and an intranet | |
US11108837B2 (en) | Media downlink transmission control method and related device | |
CN111258723B (zh) | 分布式系统的事务处理方法、装置、系统、介质及设备 | |
WO2021197489A1 (zh) | 通信系统、方法及装置 | |
US8959534B2 (en) | Enabling legacy applications to achieve end-to-end communication with corresponding legacy device services | |
KR102525060B1 (ko) | 액세스 방법, 사물 인터넷 플랫폼, 애플리케이션 기기, 서비스 기기 | |
CN113806117B (zh) | 双系统广播方法、装置、电子设备及计算机可读存储介质 | |
CN109408251B (zh) | 消息发送方法与装置、消息接收处理方法与装置 | |
US20230300213A1 (en) | Information transmission method and communication device | |
US10904746B2 (en) | Implementation method, apparatus and system for remote access | |
WO2018214762A1 (zh) | 一种获取寻呼参数的方法及装置 | |
CN115811538B (zh) | 数字钥匙业务的请求和处理方法、装置、系统和介质 | |
CN113396600B (zh) | 信息验证方法、装置、设备及存储介质 | |
CN106231538B (zh) | 一种OneM2M架构设备绑定的方法和装置 | |
CN112822300A (zh) | 基于rdma的数据传输方法、装置及电子设备 | |
CN102681969B (zh) | 基于can总线的长帧数据传输方法 | |
CN113992740B (zh) | 一种基于自主可控的中间件及数据传输方法 | |
WO2017000256A1 (zh) | 一种定位方法及对应装置 | |
CN108228880B (zh) | 数据库管理系统调用外部函数的方法、装置、设备及介质 | |
KR20220006605A (ko) | 클라우드 통신 방법 및 장치, 사용자 기기, 네트워크 기기 | |
CN110008033B (zh) | 一种和客户端进行通信的方法及电子设备 | |
JP6218937B2 (ja) | クラスタリングシステムに基づくサービススケジューリング方法、システム、端末および記憶媒体 | |
CN112532561B (zh) | 用于实现设备间访问的方法、装置、系统及存储介质 | |
CN112769753B (zh) | 一种物联网设备的共享方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 510000 No.8 Songgang street, Cencun, Tianhe District, Guangzhou City, Guangdong Province Applicant after: GUANGZHOU XPENG AUTOMOBILE TECHNOLOGY Co.,Ltd. Address before: 510000 nine Guangdong, Guangzhou 333, Jianshe Road 245, Guangzhou, China Applicant before: GUANGZHOU XPENG AUTOMOBILE TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |