本技术涉及通信,尤其涉及一种进程内通信方法、系统、车载终端及存储介质。
背景技术:
1、随着移动应用的不断发展,android(安卓)应用程序进程内的通信需求日益增长。为了满足这一需求,开发者们通常会采用进程内的事件总线机制来实现数据传递和事件响应,提高了软件的解耦程度和可维护性。现有的安卓进程内事件总线框架通常依赖于第三方库,如rxjava(反应式扩展java)、eventbus(事件总线)等,通过观察者模式实现了高效的事件传递机制,极大地简化了开发者的编程工作。
2、然而,这种框架虽然提供了强大的功能,但由于第三方库的引入,也随之带来了以下问题。1、依赖复杂性:引入的第三方库增加了项目的依赖复杂性;2、项目体积增大:第三方库的引入可能会增加项目的体积,影响加载速度;3、兼容性问题:第三方库可能存在兼容性问题,影响项目的稳定性;4、黏性事件实现复杂:第三方库在实现黏性事件时,通常需要引入额外的依赖或者实现较为复杂的逻辑。因此,亟需提出一种事件总线框架,通过更轻量、更高效且易于集成的进程内事件总线机制实现进程内各组件的通信。
技术实现思路
1、鉴于以上所述现有技术的缺点,本技术公开了一种进程内通信方法、系统、车载终端及存储介质,用于解决现有技术中进程内通信机制复杂低效的技术问题。
2、第一方面,本技术提供了一种进程内通信方法,所述方法包括:通过进程内事件总线框架创建监听对象集合,所述监听对象集合中每一监听对象对应一个事件,每一所述监听对象上注册有至少一个对应事件的观察者;若监测到进程内目标事件的状态发生变化,则根据所述目标事件获取所述监听对象集合中的目标监听对象;基于所述目标事件的状态变化,重置所述监听对象中所述目标事件的状态值并进行发布,确定发布后所述目标监听对象上是否存在所述观察者;在所述目标监听对象上不存在所述观察者时,将所述目标监听对象移除。
3、于本技术一实施例中,所述进程内事件总线框架的构建方式,包括:根据可观察的数据持有类与可变的实时数据类,创建监听对象生成类,并设置所述监听对象生成类的监听对象脚本、第一属性与第一功能,所述第一属性包括事件的黏性订阅属性与标识属性,所述第一功能包括观察者注册功能与观察者移除功能;自定义监听对象管理类,并设置所述监听对象管理类的第二属性与第二功能,其中,所述监听对象管理类用于管理每一所述监听对象,所述第二属性包括存储每一所述监听对象的弱引用集合与存储需要持久性订阅的监听对象的强引用集合,所述第二功能包括监听对象创建功能与监听对象移除功能。
4、于本技术一实施例中,所述通过进程内事件总线框架创建监听对象集合,包括:获取每一事件的业务场景与事件标识,以及每一事件对应的所有观察者的观察者标识与生命周期状态;调用所述监听对象管理类,通过所述监听对象创建功能生成每一事件的监听实例;响应每一所述监听实例,运行所述监听对象脚本并执行所述观察者注册功能,以根据每一事件的所述业务场景与所述事件标识,设置每一所述监听实例的所述黏性订阅属性与所述标识属性,以及根据所述观察者标识在每一所述监听实例上注册观察者,生成多个监听对象;将所述多个监听对象存储进所述弱引用集合,以及根据所有观察者的所述生命周期状态,确定每一所述监听对象的订阅方式是否为持久性订阅方式,若是,则将对应的监听对象存储进所述强引用集合,完成所述监听对象集合的创建。
5、于本技术一实施例中,所述进程内事件总线框架包括监听对象管理类,所述监听对象管理类包括监听对象移除功能;所述将所述目标监听对象移除,包括:根据所述目标监听对象上所有观察者的生命周期状态,确定所述目标监听对象的订阅方式是否为持久性订阅方式;若是,则在所有观察者被移除后,响应于监听对象移除操作,调用所述监听对象管理类,执行所述监听对象移除功能,将所述目标监听对象移除;若否,则在所有观察者被移除后,将所述目标监听对象清除。
6、于本技术一实施例中,所述进程内事件总线框架包括监听对象生成类,所述监听对象生成类包括观察者移除功能;所述确定发布后所述目标监听对象上是否存在所述观察者之前,还包括:若任一观察者的所述生命周期状态存在生命周期,则在所述生命周期结束后,将所述任一观察者从所述目标监听对象上移除;若任一观察者的所述生命周期状态不存在生命周期,则响应于观察者移除操作,调用所述监听对象生成类,执行所述观察者移除功能,将所述任一观察者从所述目标监听对象上移除。
7、于本技术一实施例中,所述确定发布后所述目标监听对象上是否存在所述观察者,包括:在所述观察者移除功能中定义观察者数量监测函数;执行所述观察者数量监测函数,监测所述目标监听对象上的观察者数量;根据所述观察者数量确定所述目标监听对象上是否存在所述观察者。
8、于本技术一实施例中,所述根据所述目标事件获取所述监听对象集合中的目标监听对象之前,还包括:根据所述目标监听事件的事件标识,在所述监听对象集合中进行监听对象的匹配;若匹配失败,则根据所述进程内事件总线框架创建所述目标监听事件对应的监听对象并存储至所述监听对象集合中。
9、第二方面,本技术提供了一种进程内通信系统,所述系统包括:创建模块,用于通过进程内事件总线框架创建监听对象集合,所述监听对象集合中每一监听对象对应一个事件,每一所述监听对象上注册有至少一个对应事件的观察者;监测模块,用于若监测到进程内目标事件的状态发生变化,则根据所述目标事件获取所述监听对象集合中的目标监听对象;交互模块,用于基于所述目标事件的状态变化,重置所述监听对象中所述目标事件的状态值并进行发布,确定发布后所述目标监听对象上是否存在所述观察者;移除模块,用于在所述目标监听对象上不存在所述观察者时,将所述目标监听对象移除。
10、第三方面,本技术提供了一种车载终端,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得车载终端实现如第一方面描述的进程内通信方法。
11、第四方面,本技术提供了一种计算机可读存储介质,其上存储有计算机程序,当计算机程序被计算机的处理器执行时,使计算机执行如第一方面描述的进程内通信方法。
12、如上所述,本技术实施例提供的一种进程内通信方法、系统、车载终端及存储介质,具有以下有益效果:
13、首先通过进程内事件总线框架创建监听对象集合,该监听对象集合中每一监听对象对应一个事件,每一监听对象上注册有至少一个对应事件的观察者,在监测到进程内的目标事件的状态发生变化时,根据目标事件获取监听对象集合中的目标监听对象,然后基于目标事件的状态变化,重置监听对象中目标事件的状态值并进行发布,以通知到目标监听对象上的观察者,接着确定发布后目标监听对象上是否还存在观察者,并在目标监听对象上不存在观察者时,将目标监听对象移除,通过进程内事件总线框架创建进程内事件的监听对象,以监听对象实现发布者的消息发布以及订阅者的信息订阅,无需引入第三方库,减少了项目的依赖复杂性、降低了项目的体积以及提高了项目的兼容性,实现了轻量级进程内事件总线框架,且制定监听对象清理机制,避免了不必要的内存占用,在不引入第三方库的情况下,通过更轻量、更高效且易于集成的进程内事件总线机制实现了进程内各组件间简单高效的通信机制。
14、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
1.一种进程内通信方法,其特征在于,所述方法包括:
2.根据权利要求1所述的进程内通信方法,其特征在于,所述进程内事件总线框架的构建方式,包括:
3.根据权利要求2所述的进程内通信方法,其特征在于,所述通过进程内事件总线框架创建监听对象集合,包括:
4.根据权利要求1所述的进程内通信方法,其特征在于,所述进程内事件总线框架包括监听对象管理类,所述监听对象管理类包括监听对象移除功能;
5.根据权利要求4所述的进程内通信方法,其特征在于,所述进程内事件总线框架包括监听对象生成类,所述监听对象生成类包括观察者移除功能;
6.根据权利要求1所述的进程内通信方法,其特征在于,所述确定发布后所述目标监听对象上是否存在所述观察者,包括:
7.根据权利要求1至6任一项所述的进程内通信方法,其特征在于,所述根据所述目标事件获取所述监听对象集合中的目标监听对象之前,还包括:
8.一种进程内通信系统,其特征在于,所述系统包括:
9.一种车载终端,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1至7任一项所述的进程内通信方法。
