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

进程间通信方法和装置与流程

2022-06-05 19:54:35 来源:中国专利 TAG:
1.本技术涉及通信
技术领域
:,尤其涉及一种进程间通信方法和装置。
背景技术
::2.安卓系统(android)是智能手机等电子设备常用的操作系统,安卓系统中两个进程之间通过binder通信,所以binder也称为一种跨进程通信(inter-processcommunication,ipc)机制。系统中binder通信个数和binder通信耗时对系统性能影响很大。3.binder通信主要包括三个流程:服务注册、获取服务和使用服务,服务注册是指系统中的各个系统服务向服务管理器(servermanager)注册,注册完成后服务管理器保存有系统服务的信息,在获取服务阶段,客户端(或者称为应用)向服务管理器请求要访问的系统服务的访问引用,服务管理器将系统服务返回给客户端,客户端根据获取到的系统服务访问引用访问系统服务。其中,在获取服务阶段,客户端和服务管理器需要进行binder通信,客户端向位于内核中的binder驱动请求系统服务访问引用,binder驱动接收到请求之后向服务管理器发送该请求,服务管理器根据请求向binder返回客户端所请求的系统服务的访问引用,binder驱动将系统服务的访问引用返回给客户端,该过程需要四个步骤。相关技术,对获取服务进行了优化,客户端在初次获取某个系统服务的访问引用时,binder驱动将客户端所请求的系统服务的访问引用内存到内核中,binder驱动位于内核,binder驱动为每个客户端独立维护系统服务的访问引用,当该客户端再次请求该系统服务访问引用时,binder驱动从内核中查询到系统服务的访问引用返回给客户端,而不需要向服务管理器请求系统服务访问引用,节省了两个步骤。4.但是,当系统中运行的进程较多时,binder通信占用的资源仍然较高,对系统性能影响较大,不能满足用户需求。技术实现要素:5.本技术实施例提供一种进程间通信方法和装置,能够减少binder通信的数量,提升系统性能。6.第一方面,本技术提供一种进程间通信方法,该方法包括:应用程序判断第一系统服务的访问引用是否存储在所述应用程序进程的内存中;当所述第一系统服务的访问引用存储在所述应用程序进程的内存时,使用所述第一系统服务的访问引用访问所述第一系统服务;当所述第一系统服务的访问引用没有存储在所述应用程序进程的内存时,所述应用程序根据所述第一系统服务的标识通过binder通信从服务管理器处获取所述第一系统服务的访问引用,使用所述第一系统服务的访问引用访问所述第一系统服务,并将所述第一系统服务的访问引用存储在所述应用程序进程的内存中。7.在本技术的方法中,当应用程序第一次访问第一系统服务时,应用程序进程的内存中没有存储第一系统服务的访问引用,应用程序可以通过binder通信从服务管理器处请求第一系统服务的访问引用,并将请求到的第一系统服务的访问引用存储到应用程序进程的内存中,后续,当该应用程序再次访问该第一系统服务时,则应用程序可以从应用程序进程的内存中获取到该第一系统服务的访问引用,不需要通过binder通信向内核或者服务管理器请求第一系统服务的访问引用,从而减少了系统中的binder通信次数。8.在第一种可能的实现方式中,所述将所述第一系统服务的访问引用存储在所述应用程序进程的内存之后,还包括:当所述应用程序进程的内存中存储的系统服务的访问引用的数量达到预设数量时,所述应用程序从所述应用程序进程的内存中删除一个或者多个系统服务的访问引用。9.该实现方式中,当内存中存储的系统服务的访问引用的数量达到预设数量,对其进行删除操作,保证系统内存空间充足。10.可选的,所述应用程序从所述应用程序进程的内存中删除一个或者多个系统服务的访问引用,包括:所述应用程序使用最近最少使用lru、最少使用频率lfu、或者先进先出fifo方式从所述应用程序进程的内存中删除一个或者多个系统服务的访问引用。11.在第一种可能的实现方式中,将所述第一系统服务的访问引用存储在所述应用程序进程的内存中之后,还包括:所述应用程序请求binder驱动监听所述第一系统服务的状态。12.在该实现方式中,应用程序请求监听系统服务可以保证系统服务在重启其地址发生变化后,应用程序可以及时得知,不会用错误的系统服务地址请求系统服务,导致无法使用系统服务。13.在第一种可能的实现方式中,所述方法还包括:所述应用程序接收所述binder驱动发送的删除请求,所述删除请求用于请求删除所述第一系统服务的访问引用,所述删除请求是所述binder驱动在监听到所述第一系统服务重启后发送的;所述应用程序根据所述删除请求从所述应用程序进程的内存中删除所述第一系统服务的访问引用。14.在该实现方式中,binder驱动在监听到所述第一系统服务重启后发送删除请求给应用程序,用于删除从所述应用程序进程的内存中删除所述第一系统服务的访问引用,可以保证应用程序进程的内存中第一系统服务的访问引用的正确性。15.可选的,所述删除请求中还包括所述第一系统服务重启后的访问引用,相应的,所述方法还包括:所述应用程序将所述第一系统服务重启后的访问引用存储到所述应用程序进程的内存中。16.在该实现方式中,应用程序将所述第一系统服务重启后的访问引用存储到所述应用程序进程的内存中,可以达到更新应用程序进程的内存中所述第一系统服务的访问引用的作用,保证可以准确调用第一系统服务。17.在第一种可能的实现方式中,所述方法还包括:所述应用程序向所述服务管理器请求所述第一系统服务的访问引用;当所述应用程序进程的内存中存储的所述第一系统服务的访问引用与向所述服务管理器请求到的所述第一系统服务的访问引用不同时,所述应用程序将所述应用程序进程的内存中存储的所述第一服务的访问引用更新为向所述服务管理器请求到的所述第一系统服务的访问引用。18.在该实现方式中,应用程序将所述第一系统服务重启后的访问引用存储到所述应用程序进程的内存中,更新应用程序进程的内存中所述第一系统服务的访问引用的作用,可以保证应用程序进程的内存中所述第一系统服务的访问引用的正确性,保证可以准确调用第一系统服务。19.可选的,所述应用程序向所述服务管理器请求所述第一系统服务的访问引用,包括:所述应用程序向所述服务管理器请求所述应用程序进程的内存中存储的各系统服务的访问引用。20.或者,所述应用程序向所述服务管理器请求所述第一系统服务的访问引用,包括:当所述第一系统服务的访问引用在所述应用程序进程的内存的存储时间达到预设时长时,所述应用程序向所述服务管理器请求所述第一系统服务的访问引用。21.在该实现方式中,当所述第一系统服务的访问引用在所述应用程序进程的内存的存储时间达到预设时长时,所述应用程序向所述服务管理器请求所述第一系统服务的访问引用,避免了第一系统服务重启时,由于第一系统服务访问引用发生变化,导致从应用程序进程的内存中读取的第一系统服务的访问引用错误,从而导致无法访问第一系统服务,而在一定预设时长访问一次便可避免此问题发生。22.在第一种可能的实现方式中,所述应用程序判断第一系统服务的访问引用是否存储在所述应用程序进程的内存中,包括:所述应用程序根据所述第一系统服务的标识查询所述应用程序进程的内存;如果所述应用程序进程的内存中存储有所述第一系统服务的标识,则确定所述第一系统服务的访问引用存储在所述应用程序进程的内存中;如果所述应用程序进程的内存中没有存储所述第一系统服务的标识,则确定所述第一系统服务的访问引用没有存储在所述应用程序进程的内存中。23.第二方面,本技术提供一种进程间通信方法,该方法包括:binder驱动接收应用程序发送的监听请求,所述监听请求用于请求监听第一系统服务的状态;所述binder驱动根据所述监听请求监听所述第一系统服务的状态。24.在本技术的方法中,binder驱动监听所述第一系统服务的状态,可以避免当第一系统服务重启时,由于第一系统服务访问引用发生变化,导致从应用程序进程的内存中读取的第一系统服务的访问引用错误,从而导致无法访问第一系统服务。25.在第一种可能的实现方式中,当监听到所述第一系统服务的状态重启时,所述binder驱动向所述应用程序发送删除请求,所述删除请求用于指示删除所述第一系统服务的访问引用。26.在该实现方式中,binder驱动在监听到所述第一系统服务重启后发送删除请求给应用程序,用于删除从所述应用程序进程的内存中删除所述第一系统服务的访问引用,可以保证应用程序进程的内存中第一系统服务的访问引用的正确性。27.可选的,所述删除请求中包括所述第一系统服务重启后的访问引用,相应的,所述方法还包括:所述binder驱动从所述服务管理器获取所述第一系统服务重启后的访问引用。28.第三方面,本技术提供一种进程间通信装置,所述装置可以包括用于实现第一方面中的方法的各个模块,这些模块可以通过软件和/或硬件的方式实现。29.第四方面,本技术提供另一种进程间通信装置,所述装置可以包括用于实现第二方面中的方法的各个模块,这些模块可以通过软件和/或硬件的方式实现。30.第五方面,本技术提供一种进程间通信装置,包括:存储器和处理器;所述存储器用于存储程序指令;所述处理器用于调用所述存储器中的程序指令执行如第一方面或其中任意一种可能的实现方式所述的方法。31.第六方面,本技术提供一种芯片,包括至少一个处理器和通信接口,所述通信接口和所述至少一个处理器通过线路互联,所述至少一个处理器用于运行计算机程序或指令,以执行如第一方面或其中任意一种可能的实现方式所述的方法。32.第七方面,本技术提供一种计算机可读介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行如第一方面或其中任意一种可能的实现方式所述的方法。33.第八方面,本技术提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如第一方面或其中任意一种可能的实现方式所述的方法。34.第九方面,本技术提供一种计算设备,包括至少一个处理器和通信接口,所述通信接口和所述至少一个处理器通过线路互联,所述通信接口与目标系统通信,所述至少一个处理器用于运行计算机程序或指令,以执行如第一方面或其中任意一种可能的实现方式所述的方法。附图说明35.图1为本技术适用的电子设备的一种结构示意图;36.图2为binder通信架构的示意图;37.图3为本技术实施例一提供的进程间通信方法的流程图;38.图4为本技术实施例适用的进程间通信架构的示意图;39.图5为本技术实施例二提供的进程间通信方法的流程图40.图6为应用程序的进程内存中的系统服务的访问引用更新示意图;41.图7为本技术实施例三提供的进程间通信方法的信令流程图;42.图8为本技术实施例四提供的进程间通信方法的流程;43.图9为实施例四适用的进程间通信架构的示意图;44.图10为本技术一个实施例提供的进程间通信装置的结构示意图;45.图11为本技术另一个实施例提供的进程间通信装置的结构示意图;46.图12为本技术另一个实施例提供的进程间通信装置的结构示意图。具体实施方式47.本技术提供一种进程间通信方法,该方法应用于电子设备上,该电子设备可以为手机、平板电脑、桌面型电脑、膝上型电脑、手持计算机、笔记本电脑、上网本、蜂窝电话、无绳电话、会话启动协议(sessioninitiationprotocol,sip)电话、个人数字处理(personaldigitalassistant,pda)、车载设备、可穿戴设备等,本技术实施例对电子设备的具体形式不做特殊限制。48.图1为本技术适用的电子设备的一种结构示意图,如图1所示,该电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universalserialbus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentificationmodule,sim)卡接口195等。可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件,或软件和硬件的组合实现。49.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(applicationprocessor,ap),调制解调处理器,图形处理器(graphicsprocessingunit,gpu),图像信号处理器(imagesignalprocessor,isp),控制器,视频编解码器,数字信号处理器(digitalsignalprocessor,dsp),基带处理器,显示处理单元(displayprocessunit,dpu),和/或神经网络处理器(neural-networkprocessingunit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。在一些实施例中,电子设备100也可以包括一个或多个处理器110。其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。这就避免了重复存取,减少了处理器110的等待时间,因而提高了电子设备100系统的效率。50.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integratedcircuit,i2c)接口,集成电路内置音频(inter-integratedcircuitsound,i2s)接口,脉冲编码调制(pulsecodemodulation,pcm)接口,通用异步收发传输器(universalasynchronousreceiver/transmitter,uart)接口,移动产业处理器接口(mobileindustryprocessorinterface,mipi),通用输入输出(general-purposeinput/output,gpio)接口,用户标识模块(subscriberidentitymodule,sim)接口,和/或通用串行总线(universalserialbus,usb)接口等。其中,usb接口130是符合usb标准规范的接口,具体可以是miniusb接口,microusb接口,usbtypec接口等。usb接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。51.可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本技术另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。52.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备100供电。53.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。54.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。55.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。56.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。57.无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocalareanetworks,wlan),蓝牙,全球导航卫星系统(globalnavigationsatellitesystem,gnss),调频(frequencymodulation,fm),nfc,红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。58.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括gsm,gprs,cdma,wcdma,td-scdma,lte,gnss,wlan,nfc,fm,和/或ir技术等。上述gnss可以包括全球卫星定位系统(globalpositioningsystem,gps),全球导航卫星系统(globalnavigationsatellitesystem,glonass),北斗卫星导航系统(beidounavigationsatellitesystem,bds),准天顶卫星系统(quasi-zenithsatellitesystem,qzss)和/或星基增强系统(satellitebasedaugmentationsystems,sbas)。59.电子设备100通过gpu,显示屏194,以及应用处理器等可以实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行指令以生成或改变显示信息。60.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,lcd),有机发光二极管(organiclight-emittingdiode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganiclightemittingdiode的,amoled),柔性发光二极管(flexlight-emittingdiode,fled),miniled,microled,micro-oled,量子点发光二极管(quantumdotlightemittingdiodes,qled)等。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。61.电子设备100可以通过isp,一个或多个摄像头193,视频编解码器,gpu,一个或多个显示屏194以及应用处理器等实现拍摄功能。62.npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。63.dpu也称为显示子系统(displaysub-system,dss),dpu用于对显示屏194的色彩进行调整,dpu可以通过三维查找表(3dlookuptable,3dlut)对显示屏的色彩进行调整。dpu还可以对画面进行缩放、降噪、对比度增强、背光亮度管理、hdr处理、显示器参数gamma调整等处理。64.外部存储器接口120可以用于连接外部存储卡,例如microsd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐、照片、视频等数据文件保存在外部存储卡中。65.内部存储器121可以用于存储一个或多个计算机程序,该一个或多个计算机程序包括指令。处理器110可以通过运行存储在内部存储器121的上述指令,从而使得电子设备100执行各种功能应用以及数据处理等。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统;该存储程序区还可以存储一个或多个应用程序(比如图库、联系人等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如照片,联系人等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflashstorage,ufs)等。在一些实施例中,处理器110可以通过运行存储在内部存储器121的指令,和/或存储在设置于处理器110中的存储器的指令,来使得电子设备100执行各种功能应用及数据处理。66.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。其中,音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170a收听音乐,或收听免提通话。受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170b靠近人耳接听语音。麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170c发声,将声音信号输入到麦克风170c。电子设备100可以设置至少一个麦克风170c。在另一些实施例中,电子设备100可以设置两个麦克风170c,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170c,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。耳机接口170d用于连接有线耳机。耳机接口170d可以是usb接口130,也可以是3.5mm的开放移动电子设备平台(openmobileterminalplatform,omtp)标准接口,还可以是美国蜂窝电信工业协会(cellulartelecommunicationsindustryassociationoftheusa,ctia)标准接口。67.传感器180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。68.其中,压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于显示屏194。压力传感器180a的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180a,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180a检测所述触摸操作强度。电子设备100也可以根据压力传感器180a的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。69.陀螺仪传感器180b可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180b确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180b可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180b检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180b还可以用于导航,体感游戏场景等。70.加速度传感器180e可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。71.距离传感器180f,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180f测距以实现快速对焦。72.接近光传感器180g可以包括例如发光二极管(led)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180g检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180g也可用于皮套模式,口袋模式自动解锁与锁屏。73.环境光传感器180l用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180l也可用于拍照时自动调节白平衡。环境光传感器180l还可以与接近光传感器180g配合,检测电子设备100是否在口袋里,以防误触。74.指纹传感器180h(也称为指纹识别器),用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。另外,关于指纹传感器的其他记载可以参见名称为“处理通知的方法及电子设备”的国际专利申请pct/cn2017/082773,其全部内容通过引用结合在本技术中。75.触摸传感器180k,也可称触控面板或触敏表面。触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,也称触控屏。触摸传感器180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180k也可以设置于电子设备100的表面,与显示屏194所处的位置不同。76.骨传导传感器180m可以获取振动信号。在一些实施例中,骨传导传感器180m可以获取人体声部振动骨块的振动信号。骨传导传感器180m也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180m也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180m获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180m获取的血压跳动信号解析心率信息,实现心率检测功能。77.按键190包括开机键,音量键等。按键190可以是机械按键,也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。78.sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口195可以支持nanosim卡,microsim卡,sim卡等。同一个sim卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。sim卡接口195也可以兼容不同类型的sim卡。sim卡接口195也可以兼容外部存储卡。电子设备100通过sim卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用esim,即:嵌入式sim卡。esim卡可以嵌在电子设备100中,不能和电子设备100分离。79.电子设备100的操作系统需要进程间通信,常用的进程间通信机制为binder通信机制,图2为binder通信架构的示意图,binder通信采用客户端(client)/服务器(server)架构,如图2所示,该架构中包括应用程序11、binder驱动22、服务管理器23和系统服务(systemservices)24。80.应用程序21作为binder通信的客户端,也称为客户端进程,系统服务24作为binder通信的服务端,也称为服务进程。客户端进程是使用系统服务的进程,服务进程是提供系统服务的进程。81.应用程序21可以是电子设备自带的应用程序,也可以是第三方设备提供的应用程序,应用程序21在运行过程中可以建立一个或者多个进程(process),多个进程可以并行执行。进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。82.每一个进程都有自己的访问空间,在使用安卓系统的电子设备中,每个进程只能运行在自己所拥有的访问空间中,该访问空间为虚拟访问空间。该访问空间分为用户空间和内核空间,图1中,应用程序21、服务管理器23和系统服务24位于用户空间中,binder驱动位于内核空间中。对于用户空间,应用程序21和系统服务24是不能共享的,即应用程序21和系统服务24都各自用于独立的用户空间。对于内核空间,应用程序21和系统服务24是可以共享的。应用程序21和系统服务24每次通信都要通过位于内核空间的binder驱动22来实现。83.binder驱动22和服务管理器23可以看做是安卓平台的基础架构,应用程序21和系统服务24可以看做是安卓平台的应用层。binder驱动22也称为binder驱动程序,binder驱动22负责进程之间的binder通信的建立,binder引用计数器管理,数据包在进程之间的传输等一系列底层支持。84.服务管理器23用于管理各种系统服务,例如系统服务的注册、系统服务的访问引用(即reference)管理等。系统服务24是一种应用程序类型,是执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是底层(接近硬件)程序。系统服务的访问引用可以以服务访问引用列表的方式存储在服务管理器23上,该服务访问引用列表中包括多个系统服务的标识。85.在基于binder机制的通信过程中,主要包括以下三个过程:注册服务、获取服务以及使用服务。86.安卓系统中的所有系统服务24都需要在服务管理器23上进行注册,服务管理器23上保存有已注册的系统服务24的信息,已注册的系统服务24的信息包括系统服务24的标识和系统服务24的访问引用,系统服务24的标识和系统服务24的访问引用一一对应,系统服务24的名称用于唯一标识一个系统服务24,系统服务24的访问引用用于索引到系统服务。系统服务24可能会重启,在系统服务24重启之后,系统服务24的访问引用会发生变化,系统服务24需要重新在服务管理器23上进行注册,即管理服务器23将系统服务24的旧访问引用替换为新访问引用,系统服务24重启之后,系统服务24的标识不发生变化。87.获取服务是指应用程序21获取系统服务24的访问引用,应用程序21在使用系统服务24之前,需要先获取系统服务24的访问引用,才能使用系统服务24,应用程序21可以向服务管理器23请求系统服务24的访问引用。88.应用程序21获取到系统服务24的访问引用后,根据系统服务24的访问引用使用系统服务24,即调用系统服务24中方法或者函数实现相应的功能。89.可以理解,图2中应用程序21、服务管理器23和系统服务24之间交互通过虚线表示,是由于它们彼此之间不是直接交互的,而是通过binder驱动22进行交互,实现ipc通信。以服务获取过程为例,当应用程序21需要访问某个系统服务24时,应用程序21向binder驱动22发送请求消息,该请求消息中包括请求的系统服务24的标识,binder驱动22将请求消息发送给服务管理器23,服务管理器23根据请求消息中的系统服务24的标识查找系统服务24的访问引用,将系统服务24的访问引用携带在请求响应中发送给binder驱动22,binder驱动22将请求响应发送给应用程序21。90.当binder驱动22从服务管理器23处请求到系统服务的访问引用后,可以将系统服务24的访问引用内存到内核空间中,binder驱动22可以为每个应用程序21维护一张系统服务的访问引用列表,该系统服务的访问引用列表中存储有该应用程序21访问过的系统服务的访问引用,后续当该应用程序21再次访问该系统服务时,应用程序21向binder驱动22发送请求消息,binder驱动22从内核空间中内存的该应用程序21的系统服务的访问引用列表中查询是否存在请求的系统服务的访问引用,如果存在,则直接向应用程序21返回请求响应,binder驱动22不需要从服务管理器23处请求服务访问引用。91.上述服务获取过程需要与binder驱动进行交互才能完成,获取步骤冗余,耗时长,在binder通信个数很多的情况下,系统性能会受到影响。92.基于此,本技术实施例提供一种进程间通信方法,当应用程序第一次访问某个系统服务时,应用程序通过binder驱动从服务管理器处获取到系统服务的访问引用,并将系统服务的访问引用存储到应用程序进程的内存中(即应用程序的用户空间中),当该应用程序再次访问该系统服务时,该应用程序先从进程内存中查询是否存在该系统服务的访问引用,如果存在该系统服务的访问引用,则直接使用该系统服务,不需要向binder驱动或者服务管理器发送任何消息,减少了binder通信,从而能够提高系统性能。93.需要说明的是,本技术实施例中,系统服务的reference可以称为系统服务的访问引用或者系统服务的引用。系统服务的访问引用可以是与服务注册的、与服务一一对应整数标识或者地址,也可以是一个包含服务访问方法的对象,例如安卓系统中的ibinder,每个ibinder中存储了服务注册的、与服务一一对应整数标识或地址,可选的,ibinder中还存储有服务的维测信息。94.每个系统服务具有唯一的标识,系统服务的标识可以为系统服务的名称(name),在系统运行之前已经确定,系统服务的标识在系统重启之后不会发生变化。95.下面,通过具体实施例对本技术所示的技术方案进行详细说明。96.图3为本技术实施例一提供的进程间通信方法的流程图,图4为本技术实施例适用的进程间通信架构的示意图,参考图3和图4,本实施例提供的方法包括以下步骤:97.s101、应用程序请求第一系统服务。98.应用程序用于向用户提供一个或者多个功能,所以应用程序是指完成一个或者多个功能的计算机程序,应用程序可以包括两部分计算机程序,一部分是系统自带的计算机程序,另一部分是第三方开发的计算机程序。可以理解,应用程序的全部计算机程序也可以都由第三方开发,本实施例不对此进行限制。99.应用程序在被运行过程中,需要访问系统服务完成一些功能,一个系统服务可以被多个应用程序访问。在终端设备中存在大量的系统服务,例如,有些手机中包括256个系统服务,系统服务可以被不同的应用程序反复使用,有些系统服使用的频率较高,而另一些系统服务被使用的频率较低。100.s102、应用程序判断第一系统服务的访问引用是否存储在应用程序进程的内存中。101.应用程序在使用第一系统服务之前,需要获取第一系统服务的访问引用,每个系统服务具有唯一的标识,系统服务的标识能够唯一标识一个系统服务,且不会发生变化,系统服务的访问引用在应用程序运行过程中可能发生变化。102.本实施例中,应用程序初次访问系统服务后,会存储系统服务的访问引用,系统服务的访问引用可以存储在应用程序进程的内存中。每个应用程序可以建立多个进程,进程之间是独立的运行的,系统服务的访问引用可以以进程为单位存储在应用程序进程的内存中,也可以以应用程序为单位存储在应用程序进程的内存中。103.当系统服务的访问引用以进程为单位存储在应用程序进程的内存中时,该应用程序的多个进程之间不能互相访问对方的系统服务的访问引用。例如,应用程序中包括进程a和进程b,进程a将系统服务a的访问引用存储在进程a的内存中,进程b将系统服务b的访问引用存储在进程b的内存中,则进程a无法从进程b的内存中读取系统服务b的访问引用,同样,进程b无法从进程a的内存中读取系统服务a的访问引用。104.当系统服务的访问引用以应用程序为单位存储在应用程序进程的内存中,即将该应用程序访问过的所有系统服务的访问引用存储到该应用程序的某个进程的内存中,或者,将该应用程序访问过的所有系统服务的访问引用存储到该应用程序的固定内存中,该固定内存不属于该应用程序的任何一个进程。此时,该应用程序的多个进程都能够读取到该固定内存中的系统服务的访问引用。105.示例性的,系统服务的访问引用可以以列表的形式存储在应用程序进程的内存中,存储系统服务的访问引用的列表可以称为服务的访问引用列表、服务接口列表或者服务引用列表或者服务地址列表,服务的访问引用列表中存储有多个系统服务的标识和访问引用,其中,系统服务的标识和访问引用一一对应,服务的访问引用列表可以如表一所示。106.表一(服务的访问引用列表)107.系统服务的标识系统服务的访问引用aaaaaaabbbbbbbcccccccddddddd108.应用程序根据第一系统服务的标识,从应用程序进程的内存中读取服务的访问引用列表,如果服务的访问引用列表中存在第一系统服务的标识和访问引用,则确定第一系统服务的访问引用存储在应用程序进程的内存中,如果服务的访问引用列表中不存在第一系统服务的标识和访问引用,则确定第一系统服务的访问引用没有存储在应用程序进程的内存中。当第一系统服务的访问引用存储在应用程序进程的内存时,执行步骤s103,当第一系统服务的访问引用没有存储在应用程序进程的内存中时,执行步骤s104。109.第一系统服务为当前要访问的系统服务,第一系统服务可以为图4中的系统服务x,应用程序21在请求系统服务x时,先从进程的内存中读取服务的访问引用列表,判断服务的访问引用列表中是否有系统服务x的访问引用。如果服务的访问引用列表中没有存储系统服务x的访问引用,则说明应用程序21第一次请求系统服务x,如果服务的访问引用列表中存储有系统服务x的访问引用,则说明应用程序21不是第一次请求系统服务x的访问引用,应用程序21之前使用过系统服务x,所以,服务的访问引用列表中存储有系统服务x的访问引用。110.s103、应用程序使用第一系统服务的访问引用访问第一系统服务。111.当应用程序进程的内存中存储有第一系统服务的访问引用时,则直接使用第一系统服务的访问引用,不需要通过binder通信从服务管理器处获取第一系统服务的访问引用,其中,应用程序访问系统服务可以理解为应用程序调用系统服务。112.s104、应用程序根据第一系统服务的标识通过binder通信从服务管理器处获取第一系统服务的访问引用,使用第一系统服务的访问引用访问第一系统服务,并将第一系统服务的访问引用存储在应用程序进程的内存中。113.其中,服务管理器用于管理所有的系统服务,服务管理器中保存了已注册的系统服务的访问引用,当应用程序第一次访问第一系统服务时,应用程序进程的内存中没有存储第一系统服务的访问引用,应用程序可以通过binder通信从服务管理器处请求第一系统服务的访问引用,并将请求到的第一系统服务的访问引用存储到应用程序进程的内存中,后续,当该应用程序再次访问该第一系统服务时,则应用程序可以从应用程序进程的内存中获取到该第一系统服务的访问引用,不需要通过binder通信向内核或者服务管理器请求第一系统服务的访问引用,从而减少了系统中的binder通信次数。114.以图4为例,应用程序21第一次访问系统服务x时,通过以下步骤获取到系统服务x的访问引用:1、应用程序21判断服务的访问引用列表中是否存储有系统服务x访问引用;2、当服务的访问引用列表中没有存储系统服务x的访问引用,应用程序21向binder驱动22发送访问引用请求消息,该访问引用请求消息用于请求系统服务x的访问引用;3、binder驱动22将访问引用请求消息发送给服务管理器23;4、服务管理器23从服务的访问引用列表中查询服务x的访问引用;5、服务管理器23向binder驱动22发送访问引用请求响应,该访问引用请求响应中包括服务x的访问引用;6、binder驱动22向应用程序21发送该访问引用请求响应;7、应用程序21将服务x的访问引用存储到服务的访问引用列表中。115.访问引用请求消息中包括服务x的标识,服务管理器23接收到访问引用请求消息后,根据服务x的标识从服务的访问引用列表中查询服务x的访问引用。116.应用程序21从响应消息中获取到系统服务x的访问引用之后,使用系统服务x的访问引用,并将系统服务x的访问引用存储到应用程序21的服务的访问引用列表中,后续当应用程序21第2-n次请求系统服务x时,从图4可知,应用程序21直接从内存中存储的服务的访问引用列表中获取到系统服务x的访问引用,不需要通过binder驱动向服务管理器23请求系统服务x的访问引用,从而减少了binder通信的数量。117.应用程序x获取到访问引用之后,使用该访问引用的过程如图4所示:8、应用程序21向binder驱动22发送访问请求,该访问请求消息用于访问系统服务x,该访问请求消息中包括系统服务x的访问引用;9、binder驱动22将访问请求消息发送给系统服务x;10、系统服务x根据访问请求消息进程相应的处理;11、系统服务x向binder驱动22返回访问请求响应,该访问请求响应中包括处理结果或者调用结果;12、binder驱动22将访问请求响应发送给应用程序21。118.为了区分系统服务x的访问引用的获取过程和使用过程,图4中将系统服务x的访问引用的获取过程用实线表示,将系统服务x的访问引用的使用过程用虚线表示,可知,应用程序在第1次获取系统服务的访问引用时需要通过一次binder通信,在使用系统服务的访问引用时也需要通过一次binder通信。119.从图4可知,应用程序21和服务管理器23的内存中都存储有服务访问引用列表,但是,二者存储的服务的访问引用列表不同,应用程序21的服务的访问引用列表用于存储应用程序21使用过的系统服务的访问引用,服务管理器23的服务的访问引用列表中存储有终端设备上的所有已注册的系统服务的访问引用。不同应用程序使用过的系统服务不同,所以,不同应用程序的中存储的服务的访问引用列表不同。120.可选的,应用程序进程的内存中存储的系统服务的访问引用的数量有限,当应用程序进程的内存中存储的系统服务的访问引用的数量达到预设数量时,应用程序从应用程序进程的内存中删除一个或者多个系统服务的访问引用。该预设数量可以是应用程序自己设置的,也可以是服务管理器23设置的。121.示例性的,可以使用采用以下算法中任一一个方法删除系统服务的访问引用:最近最久未使用算法(theleastrecentlyused,lru)、最近最少使用算法(leastfrequencyused,lfu)、先入先出(firstinputfirstoutput,fifo)。使用上述算法从应用进程的内存中删除系统服务的访问引用也称为淘汰系统服务的访问引用。122.使用lru算法淘汰系统服务的访问引用时,如果一个系统服务的访问引用在最近一段时间没有被访问到,那么可以认为在将来该系统服务的访问引用被访问的可能性也很小,因此,当应用程序进程的内存空间不足时,最久没有访问的系统服务的访问引用最先被淘汰。123.使用lfu算法淘汰系统服务的访问引用时,如果一个系统服务的访问引用在最近一段时间内很少被访问到,那么可以认为在将来该系统服务的访问引用被访问的可能性也很小,因此,当应用程序进程的内存空间不足时,最低频率访问的系统服务的访问引用最先被淘汰。124.使用fifo算法淘汰系统服务的访问引用时,如果一个系统服务的访问引用最先进入内存,那么认为在将来该系统服务的访问引用被访问的可能性很小,因此,当应用程序进程的内存空间不足时,最先进入应用程序进程的内存的系统服务的访问引用被最先被淘汰。125.可选的,应用程序21可以将第一系统服务的访问引用存储在应用程序21进程的内存之后,判断该内存中存储的系统服务的访问引用的数量是否达到预设数量,也可以在将第一系统服务的访问引用存储在应用程序21进程的内存之前,判断该内存中存储的系统服务的访问引用的数量是否达到预设数量126.本实施例的方法,应用程序通过判断第一系统服务的访问引用是否存储在应用程序进程的内存中,当第一系统服务的访问引用存储在应用程序进程的内存时,应用程序使用第一系统服务的访问引用,当第一系统服务的访问引用没有存储在应用程序进程的内存时,应用程序从服务管理器处获取所述第一系统服务的访问引用,并将第一系统服务的访问引用存储在应用程序进程的内存中。应用程序在初次访问系统服务的访问引用时,将系统服务的访问引用存储到应用程序进程的内存中,后续再次访问该系统服务的访问引用时,直接从该内存中获取系统服务的访问引用,不需要通过binder通信向服务管理器请求,从而减少了binder通信的数量,提升了系统性能。127.系统服务在运行过程中,可能会由于一些原因导致系统服务重启,在系统服务重启之后,系统服务的访问引用会发生变化,重启之后系统服务的标识不变,系统服务重启之后,系统服务会重新在服务管理器23中注册,即服务管理器23中存储的系统服务的访问引用是最新的访问引用。在上述实施例一的基础上,由于各个应用程序都在各自的进程内存中存储有使用过的系统服务的访问引用,如果服务管理器23中的系统服务的访问引用由于系统服务重启更新了,应用程序的进程内存中存储的系统服务的访问引用没有更新,此时,如果应用程序使用该系统服务的访问引用,则会由于同一个系统服务的访问引用不一致导致该系统服务访问失败,即应用程序无法使用该系统服务的访问引用。128.为了保证应用程序进程的内存中存储的系统服务的访问引用与服务管理器23中存储的系统服务的访问引用一致,本技术实施例二提供一下进程间通信方法,图5为本技术实施例二提供的进程间通信方法的流程图,如图5所示,本实施例在实施例一的基础上,还包括如下步骤:129.s105、应用程序向binder驱动发送监听请求,该监听请求用于请求监听第一系统服务的状态。130.本步骤在步骤s204之后执行,即应用程序从服务管理器处获取第一系统服务的访问引用之后,应用程序请求binder驱动监听第一系统服务的状态,应用程序可以通过向binder驱动发送该监听请求以请求binder驱动监听第一系统服务的状态,该监听请求中包括第一系统服务的标识,用于通知binder驱动对哪个系统服务进行监听。binder驱动用于监听第一系统服务的状态,binder驱动接收到该监听请求后,开始对第一系统服务的状态监听。示例性的,第一系统服务的状态可以为正常或重启。131.可以理解,通过发送监听请求以请求binder驱动监听第一系统服务的状态只是一种示例性的方式,应用程序还可以通过其他方式请求binder驱动监听第一系统服务的状态。例如,binder驱动还向应用程序返回监听请求对应的响应,该响应用于通知应用程序binder驱动接收到了监听请求或者已开始监听第一系统服务的状态。当然,还可以通过其他消息或者更多的消息交互请求binder驱动监听第一系统服务的状态,本实施例不对此进行限制。132.可选的,该监听请求中包括第一系统服务的访问引用,该监听请求中包括的第一系统服务访问引用是应用程序进程的内存中存储的第一系统服务的访问引用。133.s106、应用程序接收binder驱动发送的删除请求,该删除请求用于请求删除第一系统服务的访问引用,该删除请求是binder驱动在监听到第一系统服务重启后发送的。134.当binder驱动监听到第一系统服务的状态为重启时,binder驱动生成删除请求,第一系统服务重启后,第一系统服务的访问引用将发生变化,第一系统服务的访问引用发生后,应用程序的进程内存中存储的第一系统服务的访问引用与服务管理器中存储的第一系统服务的访问引用不一致,binder驱动请求应用程序删除本地存储的第一系统服务的访问引用。135.图6为应用程序的进程内存中的系统服务的访问引用更新示意图,如图6所示,应用程序1和应用程序2的服务访问引用列表中都存储有系统服务x的访问引用,应用程序1和应用程序2从系统服务器中获取到系统服务x的访问引用后,都会向binder驱动22发送监听请求,可以理解,应用程序1和应用程序2发送监听请求的时间可能不同,假设应用程序1先向binder驱动22发送监听请求,binder驱动22接收到应用程序1发送的监听请求后,开始监听系统服务x的状态,并记录系统服务x的访问引用与应用程序1的关系。当binder驱动22接收到应用程序2发送的监听请求后,记录系统服务x的访问引用与应用程序2的关系到服务访问引用和应用程序的关系列表中,其中,一个系统服务的访问引用可以与多个应用程序建立关联关系。136.后续,当binder驱动22监听到系统服务重启时,根据该关系列表,向该系统服务对应的各应用程序均发送删除请求,完成多个应用程序上的该系统服务的访问引用的删除。例如,图6所示场景中,当binder驱动22监听到系统服务x重启时,查询服务访问引用和应用程序的关系列表,得到系统服务x的访问引用对应应用程序1和应用程序2,则binder驱动22向应用程序1和应用程序2发送分别发送删除请求,删除请求中包括系统服务x的标识。137.s107、应用程序根据该删除请求从应用程序进程的内存中删除第一系统服务的访问引用。138.删除请求中包括第一系统服务的标识,应用程序接收到删除请求后,根据第一系统服务的标识确定要删除第一系统服务的访问引用,从进程内存中查找到第一系统服务的标识对应的访问引用并删除。139.可选的,应用程序删除第一系统服务的访问引用后,向binder驱动返回删除请求对应的响应,通知binder驱动第一系统服务的访问引用删除成功。140.可选的,该删除请求中还包括第一系统服务重启后的访问引用,第一系统服务重启后的访问引用是binder驱动从服务管理器处获取的,binder驱动确定第一系统服务重启后,可以向服务管理器请求第一系统服务重启后的访问引用。相应的,应用程序根据删除请求删除进程内存中存储的第一系统服务的访问引用后,将第一系统服务重启后的访问引用存储到进程内存中。141.当删除请求中不包括第一系统服务重启后的访问引用时,应用程序从进程内存中删除第一系统服务的访问引用之后,当应用程序下次要使用该第一系统服务时,需要向服务管理器请求该第一系统服务的访问引用,由于服务管理器中存储的第一系统服务的访问引用是重启后的访问引用(或者认为是最新的访问引用),从而应用程序可以正常使用第一系统服务的访问引用。142.在实施例中,应用程序从服务管理器处获取第一系统服务的访问引用后,向binder驱动发送监听请求,该监听请求用于请求监听第一系统服务的状态,binder驱动根据该监听请求开始监听第一系统服务的访问引用,当监听到第一系统服务重启后时,指示应用程序删除第一系统服务的访问引用,从而能够保证应用程序的进程内存中存储第一系统服务的访问引用与服务管理器中存储的第一系统服务的访问引用一致,避免了第一系统服务重启时,由于第一系统服务访问引用发生变化,导致从应用程序进程的内存中读取的第一系统服务的访问引用错误,从而导致无法访问第一系统服务。143.实施例二中由binder驱动通过监听系统服务的状态,确定系统服务的访问引用是否发生变化。在本技术一种可选方式中,由应用程序自己检测系统服务的访问引用是否发生变化,如果系统服务的访问引用发生变化,则从应用程序进程的内存中删除该系统服务的访问引用。示例性的,应用程序向服务管理器请求第一系统服务的访问引用,当应用程序进程的内存中存储的第一系统服务的访问引用与向服务管理器请求到的第一系统服务的访问引用不同时,应用程序将应用程序进程的内存中存储的第一服务的访问引用更新为向服务管理器请求到的第一系统服务的访问引用。144.一种示例性的方式中,应用程序可以周期性向服务管理器请求应用程序进程的内存中存储的各系统服务的访问引用,并判断请求到的访问引用是否与内存进程中存储的访问引用是否相同。或者,应用程序在系统空闲时向服务管理器请求应用程序进程的内存中存储的各系统服务的访问引用,例如,当cpu的利用率小于50%,则认为系统空闲,或者内存的利用率小于40%,则认为系统空闲。145.另一种示例性的方式中,当第一系统服务的访问引用在应用程序进程的内存的存储时间达到预设时长时,应用程序向服务管理器请求第一系统服务的访问引用。各系统服务的访问引用对应的预设时长可以相同,也可以不同。或者,当应用程序对某个系统服务访问失败时,向服务管理器请求该访问失败的系统服务的访问应用。146.现有技术中,应用程序不会执行上述判断步骤s102,即不会判断第一系统服务的访问引用是否存储在应用程序进程的内存中,为了实现本技术实施例的方法,需要对系统代码进行修改,该系统代码用于在应用程序要访问或者调用系统服务时,从应用程序的进程内存中查询是否存储有系统服务的访问引用,以及对应用程序的进程内存中存储的系统服务的访问引用进行维护。在应用程序的进程启动过程中,将该系统代码加载到进程中。147.可选的,该系统代码可以集成在hwemui代码中。在进程启动过程中会将framework代码以及hwemui代码加载到进程中,从而实现将上述新增的系统代码加载到进程中。148.图7为本技术实施例三提供的进程间通信方法的信令流程图,如图7所示,本实施例的方法包括以下步骤:149.s201、应用程序创建进程。150.s202、应用程序加载framework代码。151.s203、应用程序加载hwemui代码。152.s204、应用程序查询系统服务调用函数。153.s205、应用程序调用binder内存接口。154.当进程调用原有的framework代码接口时,会跳转到新增系统代码接口:内存接口(例如getcache函数),内存接口用于从应用程序进程的内存中读取系统服务的访问引用。155.s206、应用程序判断第一系统服务的访问引用是否存储在应用程序进程的内存中。156.当第一系统服务的访问引用存储在该内存时,执行步骤s207,当第一系统服务的访问引用没有存储在该内存中时,执行步骤s209。157.s207、应用程序更新第一系统服务的访问引用的查询时间和/或查询次数。158.应用程序将第一系统服务的访问引用的查询时间更新为本次查询时间,本次查询时间可以为当前时间。更新第一系统服务的访问引用的查询次数,即将第一系统服务的访问引用的查询次数加1。159.其中,查询时间可用于后续采用lru算法对应用程序进程的内存中存储的系统服务的访问引用进行淘汰,查询次数可以用于采用lfu算法对应用程序进程的内存中存储的系统服务的访问引用进行淘汰,也可以结合lru算法和lfu算法对应用程序进程的内存中存储的系统服务的访问引用进行淘汰。160.s208、应用程序返回第一系统服务的访问引用。161.s209、应用程序向服务管理器请求第一系统服务的访问引用。162.s210、应用程序将第一系统服务的访问引用插入到该内存。163.s211、应用程序判断该内存中存储的系统服务的访问引用是否超过预设数量。164.若该内存中存储的系统服务的访问引用超过预设数量,则执行步骤s212,若该内存中存储的系统服务的访问引用超过预设数量,则执行步骤s208。165.s212、应用程序根据该内存中各系统服务的访问引用的查询时间和/或查询次数,从该内存中删除一个系统服务的访问引用。166.步骤s212之后执行步骤s209。167.示例性的,应用程序根据该内存中各系统服务的访问引用的查询时间,采用lru算法将该内存中查询时间最早的系统服务的访问引用删除,或者,应用程序根据内存中各系统服务的访问引用的查询次数,采用lfu算法将内存中查询次数最少的系统服务的访问引用删除。168.图8为本技术实施例四提供的进程间通信方法的流程,图8为实施例四适用的进程间通信架构的示意图,参照图8和图9,本实施例提供的方法包括以下步骤:169.s301、当应用程序的第一进程启动时,为该第一进程分配共享内存的访问引用,该共享内存用于存储系统服务的访问引用。170.如图8所示,该共享内存位于内核空间中,该共享内存专用于存储系统服务的访问引用,共享内存中的系统服务的访问引用可以以服务访问引用列表的方式存在,其中,共享内存中的服务访问引用列表与服务管理器23中的服务访问引用列表相同,都用于存储电子设备中的所有系统服务的访问引用。171.共享内存是一段固定内存,即系统服务的访问引用的存储位置是固定的,服务管理器23中的系统服务的访问引用存储在动态内存中,即系统服务的访问引用的存储位置不是固定的,存储位置由系统服务自己决定,系统中的各个进程无法直接访问动态内存中的系统服务的访问引用。而共享内存中系统服务的访问引用的存储位置是固定的,应用程序21在进程建立过程中,会为进程分配共享内存的访问引用,后续进程在访问系统服务时,根据共享内存的访问引用直接从共享内存中读取要访问的系统服务的访问引用。172.s302、当第一进程请求第一系统服务时,根据该共享内存的访问引用,在该共享内存中读取第一系统服务的访问引用。173.本实施例的方法,通过在内核空间中开辟一段共享内存,该共享内存用于存储系统服务的访问引用,应用程序在进程建立过程中,为该进程分配该共享内存的访问引用,当该进程访问系统服务时,根据共享内存的访问引用从共享内存中读取系统服务的访问引用,不需要通过binder通信获取系统服务的访问引用,较少了binder通信的数量,提高了系统性能。174.图10为本技术一个实施例提供的进程间通信装置的结构示意图,该装置可以用于执行前述任意一个实施例所述的方法中应用程序执行的方法,如图10所示,本实施例的进程间通信装置300可以包括:175.判断模块31,用于判断第一系统服务的访问引用是否存储在所述应用程序进程的内存中;176.使用模块32,用于当所述第一系统服务的访问引用存储在所述应用程序进程的内存时,使用所述第一系统服务的访问引用访问所述第一系统服务;177.获取模块33,用于当所述第一系统服务的访问引用没有存储在所述应用程序进程的内存时,根据所述第一系统服务的标识通过binder通信从服务管理器处获取所述第一系统服务的访问引用,使用所述第一系统服务的访问引用访问所述第一系统服务,并将所述第一系统服务的访问引用存储在所述应用程序进程的内存中。178.可选的,还包括第一删除模块,用于:当所述应用程序进程的内存中存储的系统服务的访问引用的数量达到预设数量时,从所述应用程序进程的内存中删除一个或者多个系统服务的访问引用。179.可选的,所述第一删除模块具体用于:使用最近最少使用lru、最少使用频率lfu、或者先进先出fifo方式从所述应用程序进程的内存中删除一个或者多个系统服务的访问引用。180.一种示例性的方式中,还包括监听模块,用于请求binder驱动监听所述第一系统服务的状态。181.可选的,还包括第二删除模块,用于:接收所述binder驱动发送的删除请求,所述删除请求用于请求删除所述第一系统服务的访问引用,所述删除请求是所述binder驱动在监听到所述第一系统服务重启后发送的;根据所述删除请求从所述应用程序进程的内存中删除所述第一系统服务的访问引用。182.可选的,所述删除请求中还包括所述第一系统服务重启后的访问引用,所述装置还包括存储模块,用于:将所述第一系统服务重启后的访问引用存储到所述应用程序进程的内存中。183.另一种示例性的方式中,所在装置还包括更新模块,用于:向所述服务管理器请求所述第一系统服务的访问引用;当所述应用程序进程的内存中存储的所述第一系统服务的访问引用与向所述服务管理器请求到的所述第一系统服务的访问引用不同时,将所述应用程序进程的内存中存储的所述第一服务的访问引用更新为向所述服务管理器请求到的所述第一系统服务的访问引用。184.可选的,所述更新模块具体用于:向所述服务管理器请求所述应用程序进程的内存中存储的各系统服务的访问引用。或者,当所述第一系统服务的访问引用在所述应用程序进程的内存的存储时间达到预设时长时,向所述服务管理器请求所述第一系统服务的访问引用。185.可选的,所述判断模块31具体用于:根据所述第一系统服务的标识查询所述应用程序进程的内存;如果所述应用程序进程的内存中存储有所述第一系统服务的标识,则确定所述第一系统服务的访问引用存储在所述应用程序进程的内存中;如果所述应用程序进程的内存中没有存储所述第一系统服务的标识,则确定所述第一系统服务的访问引用没有存储在所述应用程序进程的内存中。186.本实施例提供的进程间通信装置300具体可用于执行前述方法实施例中应用程序执行的方法步骤,具体实现方式和技术效果类似,这里不再赘述。187.图11为本技术一个实施例提供的进程间通信装置的结构示意图,该装置可以用于执行前述任意一个实施例所述的方法中binder驱动执行的方法,如图11所示,本实施例的进程间通信装置400可以包括:188.接收模块41,用于接收应用程序发送的监听请求,所述监听请求用于请求监听第一系统服务的状态;189.监听模块42,用于根据所述监听请求监听所述第一系统服务的状态。190.可选的,所述装置还包括发送模块,用于当监听到所述第一系统服务的状态重启时,向所述应用程序发送删除请求,所述删除请求用于指示删除所述第一系统服务的访问引用。191.可选的,所述装置还包括获取模块,用于从所述服务管理器获取所述第一系统服务重启后的访问引用。192.本实施例提供的进程间通信装置400具体可用于执行前述方法实施例中binder驱动执行的方法步骤,具体实现方式和技术效果类似,这里不再赘述。193.图12为本技术另一个实施例提供的进程间通信装置的结构示意图,图12所示的装置可以用于执行前述任意一个实施例所述的进程间通信方法。194.如图12所示,本实施例的装置500包括:存储器501、处理器502、通信接口503以及总线504。其中,存储器501、处理器502、通信接口503通过总线504实现彼此之间的通信连接。195.存储器501可以是只读存储器(readonlymemory,rom),静态存储设备,动态存储设备或者随机存取存储器(randomaccessmemory,ram)。存储器501可以存储程序,当存储器501中存储的程序被处理器502执行时,处理器502用于执行图3或图6或图7或图8所示的方法的各个步骤。196.处理器502可以采用通用的中央处理器(centralprocessingunit,cpu),微处理器,应用专用集成电路(applicationspecificintegratedcircuit,asic),或者一个或多个集成电路,用于执行相关程序,以实现本技术方法实施例的进程间通信方法。197.应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。198.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。199.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。200.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。201.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。202.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。203.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。204.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
再多了解一些

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

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

相关文献