一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

安卓组件间的通讯方法、活动组件、服务组件及系统与流程

2022-02-22 10:13:12 来源:中国专利 TAG:


1.本发明属于应用软件技术领域,涉及一种安卓(android)组件间的通讯方法、安卓组件及系统。


背景技术:

2.安卓智能手机和平板设备已经占据了全球及中国最大的互联网设备份额,由360手机卫士和360用户研究团队共同统计的《2014年中国手机流量使用报告》表明,在手机用户的种类调查上,安卓设备独占鳌头,占用户总量的近84%。
3.安卓平台上的应用是由活动(activity)组件、服务(service)组件、提供(provider)组件、接收(receiver)组件组成的。其中,活动组件用于表现功能,注重用户界面(user interface,ui)的交互,服务组件侧重于后台数据处理。当要执行一个比较耗时的任务时,如果全部由服务组件执行,数据处理过程没有问题,但是没有界面与用户的交互,用户无法感知任务的处理速度和状态;如果全部由活动组件执行可以实现用户界面交互和向用户展示数据处理流程。但是当用户中途退出ui后,数据处理任务就会中断。
4.所以,通常处理一个任务时,需要活动组件和服务组件相互配合,服务组件负责后台处理,而活动组件负责进度和状态的展示,可以保证当用户中途退出ui后,任务也不会中断。当用户再次回到ui时,也能够及时显示当前的最新进度和状态。但是以该方法执行任务时,通常情况下,活动组件和服务组件之间的耦合度较高,两者独立性较低,不利于后续开发人员的测试以及维护。


技术实现要素:

5.本技术第一方面提供了一种安卓组件间的通讯方法,该方法包括:活动组件启动服务组件,所述活动组件包含信使信令,所述信使信令包含服务组件启动参数;所述活动组件向所述服务组件发送请求指令;所述活动组件从所述服务组件接收回调参数,并根据所述回调参更新所述信使信令,所述回调参数是所述服务组件在确定所述服务组件启动参数有效时,根据所述请求指令生成的;所述活动组件根据所述更新后的信使信令获取任务处理进度及任务处理状态。这样,由于该回调参数是服务组件在确定服务组件启动参数有效时,根据请求指令生成的,该服务组件启动参数有效即可表示用户没有退出ui或者,在退出ui之后再次打开ui。根据更新后的信使信令获取任务处理进度及任务处理状态,可以显示当前的最新进度和状态,使得任务不会中断。同时,本方法中,活动组件和服务组件之间通过信使信令交互,可以提高组件之间的独立性,降低耦合度,便于开发人员的测试以及维护。
6.可选的,结合第一方面,所述活动组件启动服务组件包括:所述活动组件向所述服务组件发送所述服务组件启动参数。
7.可选的,结合第一方面,所述信使信令是根据所述活动组件中预先设置的异步消息处理控件生成的。
8.可选的,所述活动组件与所述服务组件处于同一进程,或所述活动组件与所述服务组件处于不同进程。
9.本技术第二方面提供了一种安卓组件间的通讯方法,其特征在于,所述方法包括:服务组件从活动组件接收请求指令;所述服务组件确定服务组件启动参数有效时,根据所述请求指令生成回调参数;所述服务组件向所述活动组件发送所述回调参数,以指示所述活动组件更新信使信令,并根据所述信使信令获取任务处理进度及任务处理状态,所述活动组件包含所述信使信令,所述信使信令包含所述服务组件启动参数。由于该回调参数是服务组件在确定服务组件启动参数有效时,根据请求指令生成的,该服务组件启动参数有效即可表示用户没有退出ui或者,在退出ui之后再次打开ui。根据更新后的信使信令获取任务处理进度及任务处理状态,可以显示当前的最新进度和状态,使得任务不会中断。同时,本方法中,活动组件和服务组件之间通过信使信令交互,可以提高组件之间的独立性,降低耦合度,便于开发人员的测试以及维护。
10.可选的,结合第二方面,所述服务组件从活动组件接收请求指令之前,所述方法还包括:所述服务组件从所述活动组件接收所述服务组件参数。
11.可选的,结合第二方面,所述活动组件与所述服务组件处于同一进程,或所述活动组件与所述服务组件处于不同进程。
12.本技术第三方面提供了一种安卓组件间通讯的活动组件,其特征在于,所述活动组件包括:启动模块,用于启动服务组件,所述活动组件包含信使信令,所述信使信令包含服务组件启动参数;发送模块,用于向所述服务组件发送请求指令;接收模块,用于从所述服务组件接收回调参数,所述回调参数是所述服务组件在确定所述服务组件启动参数有效时,根据所述请求指令生成的;处理模块,用于根据所述回调参数更新所述信使信令;所述处理模块,还用于根据所述更新后的信使信令获取任务处理进度及任务处理状态。由于该回调参数是服务组件在确定服务组件启动参数有效时,根据请求指令生成的,该服务组件启动参数有效即可表示用户没有退出ui或者,在退出ui之后再次打开ui。根据更新后的信使信令获取任务处理进度及任务处理状态,可以显示当前的最新进度和状态,使得任务不会中断。同时,本方法中,活动组件和服务组件之间通过信使信令交互,可以提高组件之间的独立性,降低耦合度,便于开发人员的测试以及维护。
13.可选的,结合第三方面,所述启动模块,还用于向所述服务组件发送所述服务组件启动参数。
14.本技术第四方面提供了一种安卓组件间通讯的服务组件,其特征在于,所述服务组件包括:接收模块,用于从活动组件接收请求指令;处理模块,用于当确定服务组件启动参数有效时,根据所述请求指令生成回调参数;发送模块,用于向所述活动组件发送所述回调参数,以指示所述活动组件更新信使信令,并根据所述信使信令获取任务处理进度及任务处理状态,所述活动组件包含所述信使信令,所述信使信令包含所述服务组件启动参数。由于该回调参数是服务组件在确定服务组件启动参数有效时,根据请求指令生成的,该服务组件启动参数有效即可表示用户没有退出ui或者,在退出ui之后再次打开ui。根据更新后的信使信令获取任务处理进度及任务处理状态,可以显示当前的最新进度和状态,使得任务不会中断。同时,本方法中,活动组件和服务组件之间通过信使信令交互,可以提高组件之间的独立性,降低耦合度,便于开发人员的测试以及维护。
15.可选的,结合第四方面,所述接收模块,还用于从所述活动组件接收所述服务组件参数。
16.本技术第五方面提供了一种安卓组件间通讯的系统,其特征在于,所述系统包括如本技术第三方面及任意一种可选的实现方式中提供的活动组件和如本技术第四方面及任意一种可选的实现方式中所述的服务组件。
17.本技术提供了一种安卓组件间的通讯方法、活动组件、服务组件及系统,该方法包括:活动组件启动服务组件,所述活动组件包含信使信令,所述信使信令包含服务组件启动参数;所述活动组件向所述服务组件发送请求指令;所述活动组件从所述服务组件接收回调参数,并根据所述回调参更新所述信使信令,所述回调参数是所述服务组件在确定所述服务组件启动参数有效时,根据所述请求指令生成的;所述活动组件根据所述更新后的信使信令获取任务处理进度及任务处理状态。这样,由于该回调参数是服务组件在确定服务组件启动参数有效时,根据请求指令生成的,该服务组件启动参数有效即可表示用户没有退出ui或者,在退出ui之后再次打开ui。根据更新后的信使信令获取任务处理进度及任务处理状态,可以显示当前的最新进度和状态,使得任务不会中断。同时,本方法中,活动组件和服务组件之间通过信使信令交互,可以提高组件之间的独立性,降低耦合度,便于开发人员的测试以及维护。
附图说明
18.图1是本技术提供的一种安卓组件间的通讯方法流程示意图;
19.图2是本技术提供的一种活动组件的结构示意图;
20.图3是本技术提供的一种服务组件的结构示意图;
21.图4是本技术提供的一种安卓组件间通讯的系统示意图。
具体实施方式
22.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
23.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
24.为了便于理解本技术,下面对本技术中可能出现的一些专业术语以及原理做一些解释:
25.跨进程通讯:intel-process communication(ipc)。
26.安卓接口定义语言:android interface definition language(aidl),aidl是安
卓中ipc方式的一种。
27.信使(messenger)信令:安卓定义的一种轻量级ipc方案中的信令,以aidl作为底层实现原理,对aidl做了一次封装,使用方法和aidl相比更为简单,每次只能处理一次请求,不存在线程同步的问题。
28.组件独立性:指组件内部各部分以及组件之间的关系的一种衡量标准。组件之间耦合程度越低,内聚程度越高被视为组件的独立性越高。组件的独立性越高,对于开发及测试人员对代码的阅读、维护和测试越友好。
29.异步消息处理控件(handler):主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理。这种机制通常用来处理相对耗时比较长的操作。
30.服务组件启动参数(binder):在android内部,那些支撑应用的组件往往会身处于不同的进程,那么应用的底层必然会牵涉大量的跨进程通信。为了保证通信的高效性,android提供了binder机制。从实现的角度来说,binder核心被实现成一个linux驱动程序,并运行于内核态。这样它才能具有强大的跨进程访问能力。信使信令包含该服务组件启动参数。
31.活动组件与服务组件之间的通讯关系。从程序运行的角度来看,可分为:
32.1)活动组件和服务组件处于同一进程当中。
33.通常使用全局变量、回调、广播三种方式进行通讯。进程内组件间,使用全局变量、回调自定义接口,使得各模块之间代码相互牵绕,模块间耦合度增高,不利于阅读、维护和单个模块测试。
34.2)活动组件和服务组件分别处于不同的进程当中。
35.通常只能通过广播方式进行通讯。缺点是,依赖系统的广播队列,广播的分发效率会影响界面的更新速度。进程间组件间,使用广播方式。由于广播是大家熟知的用法,系统和app都经常使用,使得广播队列经常要排队分发,使得界面更新延迟几率变高。
36.安卓平台上的应用是由活动(activity)组件、服务(service)组件、提供(provider)组件、接收(receiver)组件组成的。其中,活动组件用于表现功能,注重用户界面(user interface,ui)的交互,服务组件侧重于后台数据处理。当要执行一个比较耗时的任务时,如果全部由服务组件执行,数据处理过程没有问题,但是没有界面与用户的交互,用户无法感知任务的处理速度和状态;如果全部由活动组件执行可以实现用户界面交互和向用户展示数据处理流程。但是当用户中途退出ui后,数据处理任务就会中断。
37.所以,通常处理一个任务时,需要活动组件和服务组件相互配合,服务组件负责后台处理,而活动组件负责进度和状态的展示,可以保证当用户中途退出ui后,任务也不会中断。当用户再次回到ui时,也能够及时显示当前的最新进度和状态。但是以该方法执行任务时,通常情况下,活动组件和服务组件之间的耦合度较高,两者独立性较低,不利于后续开发人员的测试以及维护。
38.有鉴于此,本技术提供了一种安卓组件间的通讯方法,请参见图1,该方法包括:
39.101、活动组件预处理。
40.1)在活动组件中定义一个handler,该handler用于接收来自服务组件中反馈的事
件信息。该事件信息可以包括任务执行的进度、任务执行的状态等。具体的,根据可以参见如下代码:
[0041][0042]
2)以handler为基础生成一个信使(messenger)信令。请参见如下代码:
[0043]
messenger messenger=new messenger(mhandler)
[0044]
3)将这个messenger的服务组件启动参数(binder)作为启动服务控件的参数之一。请参见如下代码:
[0045]
intent intent=new intent(service定义的action);
[0046]
intent.putextra(“callback”,messenger.getbinder());
[0047]
……
[0048]
intent.putextra(参数对n);
[0049]
intent.setclassname(service的包名、类名);
[0050]
102、活动组件启动服务组件。
[0051]
活动组件启动服务组件。请参见如下代码:
[0052]
mcontext.startservice(intent);
[0053]
具体的,该活动组件可以向服务组件发送服务组件启动参数(binder)。
[0054]
103、活动组件向服务组件发送请求指令。
[0055]
为了兼容用户退出ui之后又打开ui的情况,活动组件需要向服务组件发送请求指令(command),采用android标准启动接口:mcontext.startservice(intent)。请参见如下
代码:
[0056]
intent intent=new intent(“com.test.action.change_callback”);
[0057]
intent.putextra(“callback”,messenger.getbinder());
[0058]
intent.setclassname(service的包名、类名);
[0059]
mcontext.startservice(intent);
[0060]
104、当服务组件确定服务组件启动参数有效时,根据请求指令生成回调参数。
[0061]
需要说明的是,当服务组件确定服务组件启动参数有效时,可以表示用户没有退出ui或者,在退出ui之后再次打开ui。若服务组件启动参数无效,则说明用户已经退出了ui。请参见如下代码判断该启动参数是否有效:
[0062]
if(messenger.getbinder().isbinderalive()){
[0063]
messenger.send(reply);
[0064]
}
[0065]
当服务组件启动参数有效时,该服务组件根据com.test.action.change_callback获取回调(callback)参数。
[0066]
105、服务组件向活动组件发送回调参数。
[0067]
服务组件向活动组件发送回调参数。
[0068]
106、活动组件根据回调参数更新信使指令。
[0069]
活动组件根据回调参数更新信使指令。请参见如下代码:
[0070]
ibinder binder=intent.getibinderextra("callback");
[0071]
messenger messenger=new messenger(binder);
[0072]
107、活动组件根据更新后的信使指令获取任务处理进度及任务处理状态。
[0073]
活动组件根据该更新后的信使指令获取该信使指令附带的任务处理进度及任务处理状态信息。
[0074]
在数据处理过程中,可以根据需要随时调用信使指令。可以参见如下代码:
[0075][0076][0077]
需要说明的是,本技术提供的这种安卓组件间的通讯方法中,活动组件和服务组件可以处于同一进程,也可以处于不同进程。
[0078]
本技术提供的这种安卓组件间的通讯方法中,由于该回调参数是服务组件在确定
服务组件启动参数有效时,根据请求指令生成的,该服务组件启动参数有效即可表示用户没有退出ui或者,在退出ui之后再次打开ui。根据更新后的信使信令获取任务处理进度及任务处理状态,可以显示当前的最新进度和状态,使得任务不会中断。同时,本方法中,活动组件和服务组件之间通过信使信令交互,可以提高组件之间的独立性,降低耦合度,便于开发人员的测试以及维护。
[0079]
降低组件之间耦合度低有如下有益效果:
[0080]
1.组件模块间低耦合度使得各模块可并列开发,提升项目进度。
[0081]
2.组件模块间低耦合度使得代码阅读更为轻松。
[0082]
3.组件模块间低耦合度使得工程维护更为方便。
[0083]
4.组件模块间低耦合度使得测试效率大大提高。
[0084]
5.组件模块间低耦合度不会“牵一发而动全身”;
[0085]
6.组件模块间低耦合度使得组件模块自由归类,可以在同一进程,要可以分在不同进程,还可以实现一个服务为多个界面提支持。
[0086]
7.避免使用广播方式,可以降低系统广播队列的压力,不但系统广播分发变快了,自身界面的更新也能得到及时更新。
[0087]
请参见图2,本技术还提供了一种安卓组件间通讯的活动组件20,该活动组件20用于执行上述安卓组件间的通讯方法。该活动组件20包括:
[0088]
启动模块201,用于启动服务组件,所述活动组件包含信使信令,所述信使信令包含服务组件启动参数;更进一步的,该启动模块,还用于向所述服务组件发送所述服务组件启动参数。
[0089]
发送模块202,用于向所述服务组件发送请求指令;
[0090]
接收模块203,用于从所述服务组件接收回调参数,所述回调参数是所述服务组件在确定所述服务组件启动参数有效时,根据所述请求指令生成的;
[0091]
处理模块204,用于根据所述回调参数更新所述信使信令;
[0092]
所述处理模块204,还用于根据所述更新后的信使信令获取任务处理进度及任务处理状态。
[0093]
请参见图3,本技术还提供了一种安卓组件间通讯的服务组件30,该服务组件30用于执行上述安卓组件间的通讯方法,该服务组件30包括:
[0094]
接收模块301,用于从活动组件接收请求指令;
[0095]
处理模块302,用于当确定服务组件启动参数有效时,根据所述请求指令生成回调参数;
[0096]
发送模块303,用于向所述活动组件发送所述回调参数,以指示所述活动组件更新信使信令,并根据所述信使信令获取任务处理进度及任务处理状态,所述活动组件包含所述信使信令,所述信使信令包含所述服务组件启动参数。
[0097]
该接收模块301,还用于从所述活动组件接收所述服务组件参数。
[0098]
请参见图4,本技术提供了一种安卓组件间通讯的系统40,该系统包括图2所示的活动组件与图3所示的服务组件,请参见上述活动组件与服务组件进行理解,此处不再赘述。
[0099]
以上对本发明实施例所提供的一种安卓组件间的通讯方法、活动组件、服务组件
及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献