发明内容
有鉴于此,本发明提供了一种实现移动终端操作系统上的本地服务共享的方法。该方法通过提供1个公共service,可以同时监听所有服务端口并提供通用服务,给其他应用程序挂载自己的监听目标和处理指令,由公共SERVICE处理执行指令,实现了移动终端操作系统上的应用程序本地服务共享,避免了应用程序私有SERVICE跟随应用程序的运行常驻内存,占用手机的Cpu、内存、带宽等资源问题。本方法具体步骤为:
1、监听到用户事件;
2、从挂载在公共SERVICE上的应用程序的指令中,查询出监听到所述用户事件之后处理操作所对应的指令;
3、执行所述挂载在所述公共SERVICE上的监听到所述用户事件之后的处理操作所对应的指令。
其中所述公共SERVICE进一步包括脚本语言解释器,相应地,步骤2和3所述挂载在公共SERVICE上的指令具体使用的是脚本语言。
其中所述公共SERVICE进一步与后台SERVICE服务有接口,相应地,步骤2和3所述公共SERVICE接收的应用程序所挂载的指令具体使用的是:
应用程序调用后台SERVICE服务的功能模块指令,
和应用程序自行开发的个性功能模块指令。
本发明提供了一种实现移动终端操作系统上的本地服务共享的装置。该装置具体为一个公共SERVICE,该公共SERVICE具体包括:
监听单元:用于监听用户事件,并在监听到事件时,向查询单元发送监听到所述用户事件的消息;
查询单元:用于接收监听单元发来的消息,根据所述消息在指令挂载单元保存的挂载在公共SERVICE上的应用程序的指令中查询出监听到所述用户事件之后处理操作所对应的指令,并向执行单元发送执行所述处理操作所对应的指令的消息;
执行单元:用于接收查询单元发来的消息,执行在指令挂载单元中保存的所述应用程序挂载在所述公共SERVICE上的监听到该事件之后的处理操作所对应的指令;
指令挂载单元:用于保存和删除挂载在公共SERVICE上的应用程序指令。
该装置进一步包括脚本语言解释器,相应地,查询单元,执行单元,指令挂载单元所述的挂载在公共SERVICE上的指令具体使用的是脚本语言。
该装置进一步与后台SERVICE有开放接口,相应地,查询单元,执行单元,指令挂载单元所述的挂载在公共SERVICE上的指令具体包括:
应用程序调用后台SERVICE服务的功能模块指令,
和应用程序自行开发的个性功能模块指令。
可见,本发明具有如下有益效果:
本发明提供一种实现移动终端操作系统上的本地服务共享的方法及装置,通过建立1个公共service,可以同时监听所有服务端口并提供通用服务,给其他应用程序挂载自己的监听用户事件目标和处理指令,由公共SERVICE处理执行指令,实现了移动终端操作系统上的应用程序本地服务共享,避免了应用程序私有SERVICE跟随应用程序的运行常驻内存,占用手机的Cpu、内存、带宽等资源问题;另外由于应用程序把需要监听目标和处理指令挂载到公共SERVICE,使应用程序再次开发的service程序指令与公共SERVICE之间保持有开放接口,因此在利用公共SERVICE提供的通用服务同时,还可以实现应用程序之间通过公共SERVICE实现服务的共享。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
本发明提供了一种实现移动终端操作系统上的本地服务共享的方法,所述移动终端操作系统例如智能手机这种移动终端上的Android系统。该方法通过提供1个公共service,可以同时监听所有服务端口并提供通用服务,给其他应用程序挂载自己的监听目标和处理指令,实现了移动终端操作系统上的应用程序本地服务共享。
参见图2,本发明的方法具体步骤为:
21、监听到用户事件;
22、从挂载在公共SERVICE上的应用程序的指令中,查询出监听到所述用户事件之后处理操作所对应的指令;
23、执行所述挂载在所述公共SERVICE上的监听到所述用户事件之后的处理操作所对应的指令。
其中,该方法进一步包括一个新安装的应用程序挂载到公共SERVICE的步骤,参见图3,所述公共SERVICE接收所述应用程序挂载的步骤具体为:
301、公共SERVICE收到应用程序的挂载请求;
302、公共SERVICE接收所述应用程序的指令的挂载。
从应用程序角度来说,首先要判断是否识别到公共SERVICE,如果没有识别到,则启动私有SERVICE,结束挂载请求;如果识别到公共SERVICE,向公共SERVICE发送挂载请求。
考虑到可能影响顺利接收所述应用程序操作指令的挂载的几个方面,如:应用程序数据的安全,指令成功的执行,节省系统的资源,公共SERVICE与应用程序之间的通讯,快速的查找应用程序,所以,为了确保公共SERVICE顺利接收所述应用程序操作指令的挂载,在以上所述公共SERVICE接收应用挂载的步骤301和步骤302之间,还包括公共SERVICE为接收所述应用程序的挂载请求所做的管理操作,具体为以下步骤的全部、任意一个或任意组合:
所述公共SERVICE接收所述应用程序的挂载请求时,还在公共service的内存空间,创建一个该应用程序的数据空间以保存该应用程序的指令和临时数据;
所述公共SERVICE接收所述应用程序的挂载请求时,还检查指令的合法性,如果发现错误,则通知应用程序挂载失败;
所述公共SERVICE接收所述应用程序的挂载请求时,还检查应用程序的私有service,如果发现启动,则强制关闭;
所述公共SERVICE接收所述应用程序的挂载请求时,还检查应用程序的开放接口api,确保指令能正确执行;
所述公共SERVICE接收所述应用程序的挂载请求时,还将该应用程序设置为公共服务队列成员;在此设置公共服务队列的目的是:在本发明具体实施时,步骤22所述查询具体首先从所述公共服务队列中依次查询出所述应用程序,再由所述应用程序查询出应用程序挂载在公共SERVICE上的指令,这样的设置,便于所述公共SERVICE查询指令及后续向所述应用程序反馈。
其中步骤21、22、23所述监听到用户时间具体为监听到所述用户事件所对应的服务端口的变化,本发明具体实施时,公共SERVICE监听所有已经定义的服务端口的变化,例如:监听来电,短信,文件访问,网络通讯,系统设置变化等事件。
在实际应用中,经常会发生应用程序被卸载事件,在应用程序被卸载之后,挂载在公共SERVICE上的所述被卸载应用程序的指令同时不需要再被执行,因此,其中步骤22所述监听用户事件如果是应用程序被卸载事件,则相应该方法进一步包括自动把该应用程序挂载的指令从公共service删除。
其中步骤22所述找出需要监听这个事件的应用程序之后进一步包括判断找出的应用程序的数量大于标准值时,通知部分应用程序启动私有SERVICE,所述部分指的是最少1个,并且不执行所述部分应用程序监听该事件之后所要执行的指令。进一步包括这一步骤的理由是:对于系统占用量大、经常访问使用的应用时,使用公共service则要频繁提供或调用相应的服务进程,反而会导致系统性能下降,这种情况下也建议应用程序启动自己的私有service。
其中步骤23执行所述应用程序挂载在所述公共SERVICE上的监听到该事件之后的处理操作所对应的指令具体包括:
开启或者关闭通话功能,接收或者丢弃通讯包,启动或者关闭一些应用程序,显示一些特定的信息给用户等。
在手机实际使用中,例如,用户触发了QQ上线事件,需要通知应用程序的远程服务器,使远程服务器保持用户QQ上线状态,公共SERVICE在监听到这一事件之后,与远程服务器进行通讯,将上线信息上传到远程服务器上。因此:
其中在步骤23进一步包括通讯步骤,具体为:与应用程序的服务器通讯,获得服务器的指令,并把本地信息上传到服务器上。
其中步骤23,所述执行所述应用程序挂载在所述公共SERVICE上的监听到该事件之后的处理操作所对应的指令,其指令对该事件的处理操作的权限基于该应用程序的权限。而Android系统在/system/core/private/android_filesystem_config.h头文件中对应用程序作了权限定义,且权限仅基于应用程序设置,所以所述公共SERVICE执行应用程序所挂载的命令对该事件的操作基于用户对该应用程序权限的设置,不会给用户带来额外风险。
在本发明的一个实施例中,该实施例公共SERVICE和应用程序的关系图例参见图4,所述公共SERVICE具有脚本语言解释器,换言之,所述公共SERVICE通过脚本语言解释器实现通用服务功能,相应地,本发明方法步骤22,23所述应用程序挂载在公共SERVICE上的指令使用的是脚本语言指令,所述脚本语言是指相对于普通的程序来说,不需要编译就能执行的程序体系,脚本语言就是一个在运行过程中通过脚本语言解释器来执行程序的体系,本脚本语言提供一个指令集合,给应用程序按照自己的业务逻辑,编制自己的脚本程序,这样应用程序将脚本程序挂载在到公共Service,由公共Service负责监听和执行。实现了应用程序本地服务共享,解决了智能移动终端操作系统上应用程序安装太多service而导致的消耗手机的Cpu、内存、带宽等资源问题。在本发明中所挂载的指令使用的脚本语言指令具体为以下指令集合:
监听指令集合:
Listen call:监听1个来电;
Listen SM:监听1个短信;
Listen network:监听网络通讯;
Listen file:监听1次文件操作;
Listen app:监听1个应用程序;
调用公共服务指令集合:
Sysoperation:调用公共服务程序的功能,包含电话操作,短信操作,邮件操作,文件操作,通信操作等;
调用应用程序指令集合:
Appoperation:调用应用程序自己的功能,由应用程序通过标准的app接口实现;
数学和逻辑操作符号及语句集合:
数学和逻辑操作符号:+,-,x,/,and,or,<,>等;
分支处理:if then else;
循环处理:do while;for;
公共属性集合:
Protocol:连接使用的是哪一种协议例如:QQ使用UDP;
socket_type stream:数据包封装类型,例如浏览器使用TCP;
wait:程序运行方式:Multi-threaded与single-threaded;
instances number:在同一时间之内,同一个服务可以允许的连接数量;
nice:程序优先级,越小代表该程序越优先被执行;
server program:完整被调用的应用程序全路径和名称;
env:这一个项目可以设定程序的环境变量。
在本发明的另一个实施例中,该实施例公共SERVICE和应用程序的关系图例参见图5,所述公共SERVICE与既有后台SERVICE有开放接口,换言之,公共SERVICE通过后台SERVICE实现通用服务功能,相应地,其中步骤22,23所述应用程序挂载在公共SERVICE上的指令是:
包含有应用程序调用既有后台SERVICE服务的功能模块指令,和应用程序自行开发的个性功能模块指令的指令包。
这样,应用程序将指令包挂载在公共Service上,由公共Service负责监听和执行,实现了应用程序之间的本地服务共享,解决了移动终端操作系统上应用程序安装太多service而导致的消耗手机的Cpu、内存、带宽等资源问题;其中所述应用程序自行开发的个性功能模块在公共SERVICE中留有开放接口,其他应用程序可通过挂载到公共SERVICE共享该个性功能模块。
本发明方法在具体实施时,公共SERVICE的调度程序具体由C语言实现,利用C语言实现管理所有的应用程序的接口,管理哪些应用程序可以获得哪些权限,将该调度程序编译成so,并放在linux启动目录中,然后java通过jni接口调用,并管理所有的应用程序服务。本发明公共SERVICE的调度程序具体由C语言实现的理由是:因为java具有容易被反编译被破解的缺陷,用C语言实现对公共SERVICE各个接口的调用可以使手机用户更加的安全。
本发明提供了一种实现移动终端操作系统上的本地服务共享的装置。该装置具体为一个公共SERVICE,通过这个公共service,可以同时监听所有服务端口并提供通用服务,给其他应用程序挂载自己的监听目标和处理指令,实现了移动终端操作系统上的应用程序本地服务共享。包括:
监听单元:用于监听用户事件,并在监听到事件时,向查询单元发送监听到所述用户事件的消息;
查询单元:用于接收监听单元发来的消息,根据所述消息在指令挂载单元保存的挂载在公共SERVICE上的应用程序的指令中查询出监听到所述用户事件之后处理操作所对应的指令,并向执行单元发送执行所述处理操作所对应的指令的消息;
执行单元:用于接收查询单元发来的消息,执行在指令挂载单元中保存的所述应用程序挂载在所述公共SERVICE上的监听到该事件之后的处理操作所对应的指令;
指令挂载单元:用于保存和删除挂载在公共SERVICE上的应用程序指令。
在实际应用中,当一个新安装的应用程序安装到智能移动终端操作系统,例如Android系统上后,应用程序可能会请求挂载到公共SERVICE上,则公共SERVICE需要接收应用程序的指令的挂载,因而指令挂载单元进一步用于接收应用程序的挂载请求,保存所述应用程序挂载在所述公共SERVICE上的指令。
在本发明具体实施时,为了确保公共SERVICE顺利接收所述应用程序操作指令的挂载,指令挂载单元还用于在接收挂载到公共SERVICE的应用程序的挂载请求时,对挂载进行管理,具体为:
指令挂载单元接收所述应用程序的挂载请求时,还在公共service的内存空间创建一个该应用程序的数据空间;
指令挂载单元接收所述应用程序的挂载请求时,还检查指令的合法性,如果发现错误,则通知应用程序挂载失败;
指令挂载单元接收所述应用程序的挂载请求时,还检查应用程序的私有service,如果发现启动,则强制关闭;
指令挂载单元接收所述应用程序的挂载请求时,还检查应用程序的开放接口api;
指令挂载单元接收所述应用程序的挂载请求时,还将该应用程序设置为公共服务队列成员。
在实际应用中,经常会发生应用程序被卸载事件,在应用程序被卸载之后,挂载在公共SERVICE上的所述被卸载应用程序的指令同时不需要再被执行,因此:
监听单元进一步用于判断监听到的事件是否是应用程序被卸载事件,如果是,则监听单元通知指令挂载单元删除所述应用程序挂载在公共SERVICE上的指令。
为了不让公共SERVICE频繁提供或调用相应的服务进程导致系统性能下降,因此:
查询单元进一步用于:判断找出的应用程序的数量大于标准值时,通知部分应用程序启动私有SERVICE,所述部分应用程序至少是1个;相应地,在执行单元执行指令时,该指令不包括所述启动私有SERVICE的应用程序的指令。
为了与应用程序的服务器之间建立通讯连接,该装置进一步包括通讯单元,具体用于:与应用程序的服务器通讯,获得服务器的指令,并把本地信息上传到服务器上。
在本发明的一个实施例中,参见图6,该装置,即公共SERVICE具有脚本语言解释器,相应地,查询单元,执行单元,指令挂载单元所述的挂载在公共SERVICE上的指令具体使用的是脚本语言。
在本发明的另一个实施例中,参见图7,该装置,即公共SERVICE与后台SERVICE有开放接口,相应地,查询单元,执行单元,指令挂载单元所述的挂载在公共SERVICE上的指令具体使用的是:
应用程序调用后台SERVICE服务的功能模块指令,
和应用程序自行开发的个性功能模块指令。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。