CN117632534A - 一种进程间通信方法与电子设备 - Google Patents
一种进程间通信方法与电子设备 Download PDFInfo
- Publication number
- CN117632534A CN117632534A CN202211003374.XA CN202211003374A CN117632534A CN 117632534 A CN117632534 A CN 117632534A CN 202211003374 A CN202211003374 A CN 202211003374A CN 117632534 A CN117632534 A CN 117632534A
- Authority
- CN
- China
- Prior art keywords
- system service
- access reference
- service
- memory
- client process
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 691
- 238000004891 communication Methods 0.000 title claims abstract description 121
- 230000008569 process Effects 0.000 claims abstract description 519
- 230000015654 memory Effects 0.000 claims abstract description 202
- 239000011230 binding agent Substances 0.000 claims abstract description 89
- 230000006870 function Effects 0.000 claims abstract description 68
- 238000004590 computer program Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 23
- 230000002159 abnormal effect Effects 0.000 claims 2
- 230000007246 mechanism Effects 0.000 abstract description 43
- 238000013461 design Methods 0.000 description 24
- 239000010410 layer Substances 0.000 description 22
- 238000007726 management method Methods 0.000 description 16
- 238000010295 mobile communication Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 239000000853 adhesive Substances 0.000 description 1
- 230000001070 adhesive effect Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001356 surgical procedure Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请公开了一种进程间通信方法与电子设备,该方法包括:客户端进程使用第一访问引用访问第一系统服务,得到第一信息,其中,第一访问引用存储在客户端进程的第一内存中,第一访问引用为第一服务端进程所提供的第一系统服务的访问引用,第一信息包括第一系统服务能够提供的功能的信息;客户端进程将第一信息存储在客户端进程的第二内存中,从而提高电子设备的安卓系统使用Binder通信机制时的通信效率。
Description
技术领域
本申请涉及电子设备技术领域,尤其涉及一种进程间通信方法与电子设备。
背景技术
安卓(Android)系统是电子设备常用的操作系统,安卓系统中的两个进程之间常用的进程间通信(inter-process communication,IPC)机制为粘合剂(Binder)通信机制。Binder通信机制主要包括三个流程:服务注册、获取服务和使用服务。其中,服务注册是指安卓系统中的各个系统服务在服务管理器(server manager)上进行注册,注册完成后服务管理器可保存各个系统服务的信息;获取服务是指应用(application,APP)向服务管理器请求系统服务的访问引用,服务管理器将系统服务的访问引用返回给应用;使用服务是指应用根据系统服务的访问引用访问系统服务。其中,应用作为Binder通信的客户端,也可称为客户端进程(使用系统服务的进程),系统服务作为Binder通信的服务端,也可称为服务端进程(提供系统服务的进程)。
目前,客户端进程、服务管理器和服务端进程均位于用户空间中,但这些进程之间不是直接交互,而是通过位于内核空间的Binder驱动进行交互。例如,客户端进程如果要访问服务端进程提供的系统服务,则需要进行两次跨进程调用,其中的第一次跨进程调用过程为客户端进程通过Binder驱动获取该系统服务的访问引用,其中的另一次跨进程调用过程为客户端进程通过Binder驱动使用该系统服务的访问引用访问该系统服务。跨进程调用对于安卓系统来说就是从一个进程切换到另一个进程运行,即,每次跨进程调用过程都会发生进程上下文切换,需要耗费一定的时间。可见,安卓系统使用Binder通信机制实现进程间通信时,由于存在频繁的进程上下文切换,导致通信效率较低。
发明内容
本申请实施例提供一种进程间通信方法与电子设备,用以提高电子设备的安卓系统使用Binder通信机制时的通信效率。
第一方面,本申请实施提供一种进程间通信方法,该方法包括:客户端进程使用第一访问引用访问第一系统服务,得到第一信息,其中,所述第一访问引用存储在所述客户端进程的第一内存中,所述第一访问引用为第一服务端进程所提供的所述第一系统服务的访问引用,所述第一信息包括所述第一系统服务能够提供的功能的信息;所述客户端进程将所述第一信息存储在所述客户端进程的第二内存中。
在该方法中,客户端进程在获取系统服务的访问引用成功之后,可以将该系统服务的访问引用存储在客户端进程的第一内存中,从而下一次可以直接使用存储的该系统服务的访问引用来访问该系统服务,不必再通过跨进程调用的过程来获得该系统服务的访问引用,减少了跨进程调用的次数,提高了通信效率。另外,客户端进程还可以在使用该系统服务的访问引用访问该系统服务之后,将该系统服务能够提供的功能的信息存储在客户端进程的第二内存中,从而下一次可以直接使用存储的该信息实现该系统服务能够提供的功能,进一步减少了跨进程调用的次数。可见,通过本申请实施例提供的方案能够在较大程度上减少跨进程调用的次数,从而减少了进程上下文切换的次数,有利于提高电子设备的安卓系统使用Binder通信机制时的通信效率。
在一种可能的设计中,在所述客户端进程使用第一访问引用访问第一系统服务时,如果所述第一访问引用存储在所述第一内存包括的共进程内存中,所述客户端进程可以直接使用所述第一访问引用访问所述第一系统服务,其中,所述共进程内存用于存储与所述客户端进程共进程的服务端进程所提供的系统服务的访问引用;或者,如果所述第一访问引用存储在所述第一内存包括的异进程内存中,所述客户端进程可以通过Binder驱动使用所述第一访问引用访问所述第一系统服务,其中,所述异进程内存用于存储与所述客户端进程异进程的服务端进程所提供的系统服务的访问引用。
在该方法中,客户端进程在将系统服务的访问引用存储在客户端进程的第一内存中时,可以根据提供该系统服务的服务端进程是否与客户端进程共进程,将该系统服务的访问引用分类存储在客户端进程的第一内存包括的共进程内存或者异进程内存中,从而客户端进程在下一次直接使用存储的系统服务的访问引用访问系统服务时,如果确定共进程内存中存储有该系统服务的访问引用,客户端进程可以直接使用该系统服务的访问引用访问该系统服务,而不通过位于内核空间的Binder驱动使用该系统服务的访问引用访问该系统服务,如果确定异进程内存中存储有该系统服务的访问引用,客户端进程才通过位于内核空间的Binder驱动使用该系统服务的访问引用访问该系统服务,减少Binder通信机制的使用服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高电子设备的安卓系统使用Binder通信机制时的通信效率。
在一种可能的设计中,在所述客户端进程将所述第一信息存储在所述客户端进程的第二内存中之后,如果所述第一服务端进程未更新所述第一系统服务,所述客户端进程可以使用存储在所述第二内存中的所述第一信息实现所述第一系统服务能够提供的功能;或者,如果所述第一服务端进程已更新所述第一系统服务,所述客户端进程可以使用所述第一访问引用访问所述第一系统服务,得到第二信息,使用所述第二信息实现所述第一系统服务能够提供的功能,并将存储在所述第二内存中的所述第一信息更新为所述第二信息,其中,所述第二信息包括所述已更新的所述第一系统服务能够提供的功能的信息。
在该方法中,客户端进程在系统服务能够提供的功能的信息存储在客户端进程的第二内存中之后,客户端进程可以在使用存储的该系统服务能够提供的功能的信息实现该系统服务能够提供的功能时,可以判断提供该系统服务的服务端进程是否更新该系统服务,如果确定该系统服务的服务端进程未更新该系统服务,客户端进程可以直接使用存储的该系统服务能够提供的功能的信息实现该系统服务能够提供的功能,如果确定该系统服务的服务端进程已更新该系统服务,客户端进程才重新访问已更新的该系统服务,得到已更新的该系统服务能够提供的功能的信息,减少Binder通信机制的使用服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高电子设备的安卓系统使用Binder通信机制时的通信效率。
在一种可能的设计中,该方法还包括:所述客户端进程可以从所述服务管理器获取所述第一访问引用;如果所述客户端进程获取所述第一访问引用成功,所述客户端进程可以将所述第一访问引用存储在所述第一内存中。
在该方法中,客户端进程可以从服务管理器处获取系统服务的访问引用,并在从服务管理器处获取该系统服务的访问引用成功之后,将该系统服务的访问引用存储在客户端进程的第一内存中,从而下一次可以直接使用存储的该系统服务的访问引用访问该系统服务,减少Binder通信机制的获取服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高电子设备的安卓系统使用Binder通信机制时的通信效率。
在一种可能的设计中,该方法还包括:所述客户端进程可以从所述服务管理器获取所述第一访问引用;如果所述客户端进程获取所述第一访问引用失败,所述客户端进程可以在所述服务管理器上注册系统服务通知,并在接收到用于指示第一系统服务已启动的通知时,从所述服务管理器获取所述第一访问引用,以及,将所述第一访问引用存储在所述第一内存中,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
在该方法中,客户端进程可以从服务管理器处获取系统服务的访问引用,并在从服务管理器处获取该系统服务的访问引用失败之后,在服务管理器上注册系统服务通知,在接收到用于指示该系统服务已启动的通知时,才再次从服务管理器获取该系统服务的访问引用,从而避免去获取已死亡的该系统服务的访问引用,保证客户端进程从服务管理器处获取该系统服务的访问引用成功,以及,客户端进程可以在从服务管理器处获取该系统服务的访问引用成功之后,将该系统服务的访问引用存储在客户端进程的第一内存中,从而下一次可以直接使用存储的该系统服务的访问引用访问该系统服务,即客户端进程通过在服务管理器上注册的系统服务通知和缓存系统服务的访问引用,减少Binder通信机制的获取服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高电子设备的安卓系统使用Binder通信机制时的通信效率。
在一种可能的设计中,在所述客户端进程从所述服务管理器获取所述第一访问引用之前,所述客户端进程可以确定所述第一内存中未存储所述第一访问引用,以及所述客户端进程未在服务管理器上注册系统服务通知,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
在该方法中,客户端进程在从服务管理器获取系统服务的访问引用之前,可以确定客户端进程的第一内存中未存储该系统服务的访问引用,以及客户端进程未在服务管理器上注册系统服务通知,从而客户端进程可以确定是初次从服务管理器处获取该系统服务的访问引用。
在一种可能的设计中,在所述客户端进程将所述第一访问引用存储在所述第一内存中之后,如果所述客户端进程未在所述服务管理器上注册系统服务通知,所述客户端进程可以在所述服务管理器上注册所述系统服务通知。
在该方法中,客户端进程可以在将系统服务的访问引用存储在客户端进程的第一内存中之后,如果客户端进程未在服务管理器上注册系统服务通知,客户端进程可以在服务管理器上注册系统服务通知,从而可以在接收到用于指示该系统服务已死亡的通知时,删除存储的该系统服务的访问引用,即客户端进程通过在服务管理器上注册的系统服务通知避免去访问已死亡的系统服务,减少Binder通信机制的使用服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高电子设备的安卓系统使用Binder通信机制时的通信效率。
在一种可能的设计中,在所述客户端进程从所述服务管理器获取所述第一访问引用之前,所述客户端进程可以确定所述第一内存中未存储所述第一访问引用,以及所述客户端进程已在所述服务管理器上注册系统服务通知,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
在该方法中,客户端进程在从服务管理器获取系统服务的访问引用之前,可以确定客户端进程的第一内存中未存储该系统服务的访问引用,但客户端进程已在服务管理器上注册系统服务通知,从而客户端进程可以确定不是初次从服务管理器处获取该系统服务的访问引用,而此前存储的该系统服务的访问引用,已被客户端进程在接收到用于指示该系统服务已死亡的通知时从客户端进程的第一内存中删除。
在一种可能的设计中,在所述客户端进程从所述服务管理器获取所述第一访问引用时,所述客户端进程可以在接收到用于指示所述第一系统服务已启动的通知时,从所述服务管理器获取所述第一访问引用,并将所述第一访问引用存储在所述第一内存中。
在该方法中,客户端进程可以在不是初次从服务管理器处获取系统服务的访问引用时,接收到用于指示该系统服务的访问引用已启动的通知,才再次从服务管理器获取该系统服务的访问引用,从而避免去获取已死亡的该系统服务的访问引用,保证客户端进程从服务管理器处获取该系统服务的访问引用成功,以及,客户端进程可以在从服务管理器处获取该系统服务的访问引用成功之后,将该系统服务的访问引用存储在客户端进程的第一内存中,从而下一次可以直接使用存储的该系统服务的访问引用访问该系统服务,即客户端进程通过在服务管理器上注册的系统服务通知和缓存系统服务的访问引用,减少Binder通信机制的获取服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高电子设备的安卓系统使用Binder通信机制时的通信效率。
在一种可能的设计中,在所述客户端进程将所述第一访问引用存储在所述第一内存中之后,所述客户端进程可以在接收到用于指示所述第一系统服务已死亡的通知时,删除所述第一内存中存储的所述第一访问引用。
在该方法中,客户端进程可以在将系统服务的访问引用存储在客户端进程的第一内存中之后,接收到用于指示该系统服务已死亡的通知,删除存储的该系统服务的访问引用,即客户端进程通过在服务管理器上注册的系统服务通知避免去访问已死亡的系统服务,减少Binder通信机制的使用服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高电子设备的安卓系统使用Binder通信机制时的通信效率。
第二方面,本申请提供一种进程间通信装置,所述装置具有实现上述第一方面或第一方面的任一可能的设计所描述的方法的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块,比如包括使用模块、处理模块。
使用模块,用于:使用第一访问引用访问第一系统服务,得到第一信息,其中,所述第一访问引用存储在客户端进程的第一内存中,所述第一访问引用为第一服务端进程所提供的所述第一系统服务的访问引用,所述第一信息包括所述第一系统服务能够提供的功能的信息;
处理模块,用于:将所述第一信息存储在所述客户端进程的第二内存中。
在一种可能的设计中,所述使用模块,具体用于:如果所述第一访问引用存储在所述第一内存包括的共进程内存中,直接使用所述第一访问引用访问所述第一系统服务,其中,所述共进程内存用于存储与所述客户端进程共进程的服务端进程所提供的系统服务的访问引用;或者,如果所述第一访问引用存储在所述第一内存包括的异进程内存中,通过Binder驱动使用所述第一访问引用访问所述第一系统服务,其中,所述异进程内存用于存储与所述客户端进程异进程的服务端进程所提供的系统服务的访问引用。
在一种可能的设计中,在将所述第一信息存储在所述客户端进程的第二内存中之后,所述处理模块还用于:如果所述第一服务端进程未更新所述第一系统服务,使用存储在所述第二内存中的所述第一信息实现所述第一系统服务能够提供的功能;或者,如果所述第一服务端进程已更新所述第一系统服务,使用所述第一访问引用访问所述第一系统服务,得到第二信息,使用所述第二信息实现所述第一系统服务能够提供的功能,并将存储在所述第二内存中的所述第一信息更新为所述第二信息,其中,所述第二信息包括所述已更新的所述第一系统服务能够提供的功能的信息。
在一种可能的设计中,所述装置还包括第一获取模块,用于:从所述服务管理器获取所述第一访问引用;如果获取所述第一访问引用成功,将所述第一访问引用存储在所述第一内存中。
在一种可能的设计中,所述装置还包括第二获取模块,用于:从所述服务管理器获取所述第一访问引用;如果获取所述第一访问引用失败,在所述服务管理器上注册系统服务通知,并在接收到用于指示第一系统服务已启动的通知时,从所述服务管理器获取所述第一访问引用,以及,将所述第一访问引用存储在所述第一内存中,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
在一种可能的设计中,在从所述服务管理器获取所述第一访问引用之前,所述第一获取模块或所述第二获取模块还用于:确定所述第一内存中未存储所述第一访问引用,以及所述客户端进程未在服务管理器上注册系统服务通知,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
在一种可能的设计中,在将所述第一访问引用存储在所述第一内存中之后,所述第一获取模块或所述第二获取模块还用于:如果所述客户端进程未在所述服务管理器上注册系统服务通知,所述客户端进程在所述服务管理器上注册所述系统服务通知。
在一种可能的设计中,在从所述服务管理器获取所述第一访问引用之前,所述第一获取模块或所述第二获取模块还用于:确定所述第一内存中未存储所述第一访问引用,以及所述客户端进程已在所述服务管理器上注册系统服务通知,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
在一种可能的设计中,从所述服务管理器获取所述第一访问引用,所述第一获取模块或所述第二获取模块具体用于:在接收到用于指示所述第一系统服务已启动的通知时,从所述服务管理器获取所述第一访问引用,以及,将所述第一访问引用存储在所述第一内存中。
在一种可能的设计中,在将所述第一访问引用存储在所述第一内存中之后,所述第一获取模块或所述第二获取模块还用于:在接收到用于指示所述第一系统服务已死亡的通知时,删除所述第一内存中存储的所述第一访问引用。
第三方面,本申请还提供一种电子设备,包括:处理器,存储器,以及,一个或多个程序;其中,所述一个或多个程序被存储在所述存储器中,所述一个或多个程序包括指令,当所述指令被所述处理器执行时,使得所述电子设备执行如上述第一方面或第一方面的任一可能的设计所描述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如上述第一方面或第一方面的任一可能的设计所描述的方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如上述第一方面或第一方面的任一可能的设计所描述的方法。
上述第二方面至第五方面及其可能的设计中的有益效果可以参考上述对第一方面及其任一可能的设计中所述的方法的有益效果的描述。
附图说明
图1为本申请实施例提供的一种Binder通信架构的示意图;
图2为本申请实施例提供的一种电子设备的硬件结构示意图;
图3为本申请实施例提供的一种电子设备的软件结构示意图;
图4a为本申请实施例提供的一种存储访问引用的流程示意图;
图4b为本申请实施例提供的一种访问系统服务的流程示意图;
图4c为本申请实施例提供的一种实现系统服务的功能的流程示意图;
图5为本申请实施例提供的一种进程间通信方法的流程示意图;
图6为本申请实施例提供的另一种进程间通信方法的流程示意图;
图7为本申请实施例提供的又一种进程间通信方法的流程示意图;
图8为本申请实施例提供的又一种进程间通信方法的流程示意图;
图9为本申请实施例提供的另一种电子设备的硬件结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。
下面对本申请实施例中涉及的部分用语进行解释说明,以便理解本申请实施例。
(1)本申请实施例涉及的至少一个,包括一个或者多个;其中,多个是指大于或者等于两个。另外,需要理解的是,在本说明书的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为明示或暗示相对重要性,也不能理解为明示或暗示顺序。比如,第一对象和第二对象并不代表二者的重要程度或者代表二者的顺序,仅仅是为了区分描述。在本申请实施例中,“和/或”,仅仅是描述关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
在本申请实施例的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“连接”应做广义理解,例如,“连接”可以是可拆卸地连接,也可以是不可拆卸地连接;可以是直接连接,也可以通过中间媒介间接连接。本申请实施例中所提到的方位用语,例如,“上”、“下”、“左”、“右”、“内”、“外”等,仅是参考附图的方向,因此,使用的方位用语是为了更好、更清楚地说明及理解本申请实施例,而不是指示或暗指所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请实施例的限制。“多个”是指至少两个。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本说明书的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
(2)进程(process),电子设备上安装的应用(application,APP),也称为应用程序,以一个或多个进程的形式运行在操作系统上,以实现相应的功能。进程是应用关于某数据集合的一次运行活动,是操作系统进行资源分配和调度的基本单位。进程可以看作是中央处理器(aentral processing unit,CPU)在一个时间段内的运行活动。
进程可以分为应用进程和系统服务进程。系统服务进程包括系统应用在操作系统上的运行形式。应用进程包括第三方应用在操作系统上的运行形式和系统应用在操作系统上的运行形式。也就是说,应用进程可以包括系统服务进程。
可理解的,进程存在于电子设备的内存中。电子设备运行进程时,会占用一定数量的内存来载入程序代码或者读写数据。
(3)线程(thread),是进程的一个实体,它是比进程更小的能独立运行的基本单位。一个进程可包括一个或多个线程,该多个线程可以并发执行,该多个线程可以共享该进程所拥有的全部资源。线程可以看做是CPU在相比进程的较短的一个时间段内的运行活动。
应用进程中包括的线程可以被称为应用线程,系统服务进程中包括的线程可以被称为系统服务线程。系统服务进程中包括一个或多个系统服务线程,用于为电子设备提供相应的系统服务。
(4)Binder通信机制,安卓(Android)系统是电子设备常用的操作系统,安卓系统中的两个进程之间常用的进程间通信(inter-process communication,IPC)机制为Binder通信机制。图1为本申请实施例提供的一种Binder通信架构的示意图,Binder通信采用客户端(client)/服务端(server)架构,如图1所示,该架构中包括应用11、系统服务12、服务管理器(server manager)13和Binder驱动14。
应用11作为Binder通信的客户端,也称为客户端进程,客户端进程是使用系统服务12的进程。系统服务12作为Binder通信的服务端,也称为服务端进程,服务端进程是提供系统服务12的进程。
应用11可以是电子设备自带的应用,也可以是第三方设备提供的应用。应用11在运行过程中可以建立一个或者多个进程,多个进程可以并行执行。每一个进程都有自己的访问空间,在使用安卓系统的电子设备中,每个进程只能运行在自己所拥有的访问空间中,该访问空间为虚拟访问空间。该访问空间分为用户空间和内核空间,图1中,应用11、系统服务12和服务管理器13位于用户空间中,Binder驱动位于内核空间中。对于用户空间,应用11和系统服务12是不能共享的,即应用11和系统服务12都各自用于独立的用户空间。对于内核空间,应用11和系统服务12是可以共享的。应用11和系统服务12每次通信都要通过位于内核空间的Binder驱动14来实现。
应用11和系统服务12可以看作是安卓平台的应用层,服务管理器13和Binder驱动14可以看作是安卓平台的基础架构。系统服务12是一种应用类型,是执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是底层(接近硬件)程序。服务管理器13用于管理安卓系统中的各个系统服务12,例如系统服务12的注册、系统服务12的访问引用(即reference)管理等,系统服务12的访问引用可以以服务访问引用列表的方式存储在服务管理器13上,该服务访问引用列表中包括多个系统服务12的标识。Binder驱动14也称为Binder驱动程序,Binder驱动14负责进程之间的Binder通信的建立,Binder引用计数器管理,数据包在进程之间的传输等一系列底层支持。
Binder通信机制主要包括以下三个过程:注册服务、获取服务以及使用服务。
注册服务:安卓系统中的各个系统服务12都需要在服务管理器13上进行注册,服务管理器13上保存有已注册的系统服务12的信息,已注册的系统服务12的信息包括系统服务12的标识和系统服务12的访问引用,系统服务12的标识和系统服务12的访问引用一一对应,系统服务12的名称用于唯一标识一个系统服务12,系统服务12的访问引用用于索引到系统服务12。系统服务12可能会重新启动,在系统服务12重新启动之后,系统服务12的访问引用会发生变化,系统服务12需要重新在服务管理器13上进行注册,即管理服务器23将系统服务12的旧访问引用替换为新访问引用,系统服务12重启之后,系统服务12的标识不发生变化。
获取服务:应用11获取系统服务12的访问引用,应用11在访问系统服务12之前,需要先获取系统服务12的访问引用,才能访问系统服务12,应用11可以向服务管理器13请求系统服务12的访问引用。
使用服务:应用11获取到系统服务12的访问引用后,使用系统服务12的访问引用访问系统服务12,即调用系统服务12中方法或者函数实现系统服务12相应的功能。
可以理解,图1中应用11、服务管理器13和系统服务12之间交互通过虚线表示,是由于它们彼此之间不是直接交互的,而是通过Binder驱动14进行交互,实现进程间通信。以服务获取过程为例,当应用11需要访问某个系统服务12时,应用11通过输入输出操作(input/output control,ioctl)中的输出操作向Binder驱动14发送请求消息,该请求消息中包括该系统服务12的标识,Binder驱动14通过ioctl中的输出操作将请求消息发送给服务管理器13,服务管理器13根据请求消息中的该系统服务12的标识查找该系统服务12的访问引用,将该系统服务12的访问引用携带在请求响应中通过ioctl中的输出操作发送给Binder驱动14,Binder驱动14通过ioctl中的输出操作将请求响应发送给应用11。
下面对本申请实施例中涉及的技术特征进行解释说明,以便理解本申请实施例。
如背景技术所述,当电子设备的安卓系统中的两个进程之间使用Binder通信机制实现进程间通信时,由于位于用户空间的客户端进程、服务管理器和服务端进程之间不是直接交互,而是通过位于内核空间的Binder驱动进行交互实现进程间通信,导致客户端进程先获取服务端进程提供的系统服务,再访问服务端进程提供的系统服务,会引发频繁的跨进程调用,且每次跨进程调用会发生进程上下文切换,使得电子设备的安卓系统使用Binder通信机制的效率较低。
鉴于此,本申请实施例提供一种进程间通信方法,用以提高电子设备的安卓系统使用Binder通信机制时的通信效率。在该方法中,客户端进程可以在获取系统服务的访问引用成功之后,将该系统服务的访问引用存储在客户端进程的第一内存中,从而下一次可以直接使用存储的该系统服务的访问引用访问该系统服务,减少Binder通信机制的获取服务流程中的跨进程调用的次数,客户端进程还可以在使用该系统服务的访问引用访问该系统服务之后,将该系统服务能够提供的功能的信息存储在客户端进程的第二内存中,从而下一次可以直接使用存储的该系统服务能够提供的功能的信息实现该系统服务能够提供的功能,减少Binder通信机制的使用服务流程中的跨进程调用的次数,即客户端进程通过缓存系统服务的访问引用和系统服务能够提供的功能的信息的方式减少跨进程调用的次数,进而减少进程上下文切换的次数,提高电子设备的安卓系统使用Binder通信机制时的通信效率。
本申请实施例提供的进程间通信方法可以应用于任何使用安卓系统的电子设备中。在本申请一些实施例中,电子设备可以是便携式设备,诸如手机、平板电脑、具备无线通讯功能的可穿戴设备(例如,手表、手环、头盔、耳机等)、车载终端设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personaldigital assistant,PDA)等。电子设备还可以是智能家居设备(例如,智能电视、智能音箱等)、智能汽车、智能机器人、车间设备、无人驾驶(Self Driving)中的无线终端、远程手术(Remote Medical Surgery)中的无线终端、智能电网(Smart Grid)中的无线终端、运输安全(Transportation Safety)中的无线终端、智慧城市(Smart City)中的无线终端,或智慧家庭(Smart Home)中的无线终端、飞行设备(例如,智能机器人、热气球、无人机、飞机)等。本申请实施例对电子设备的具体类型不作任何限制。
图2为本申请实施例提供的一种电子设备的硬件结构示意图。如图2所示,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universalserial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。充电管理模块140用于从充电器接收充电输入。电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
显示屏194用于显示应用的显示界面,例如显示电子设备100上安装的应用的显示页面等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystaldisplay,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,以及至少一个应用程序的软件代码等。存储数据区可存储电子设备100使用过程中所产生的数据(例如拍摄的图像、录制的视频等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将图片,视频等文件保存在外部存储卡中。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
其中,传感器模块180可以包括压力传感器180A,加速度传感器180B,触摸传感器180C等。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。
触摸传感器180C,也称“触控面板”。触摸传感器180C可以设置于显示屏194,由触摸传感器180C与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180C用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180C也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现与电子设备100的接触和分离。
可以理解的是,图2所示的部件并不构成对电子设备100的具体限定,电子设备100还可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。此外,图2中的部件之间的组合/连接关系也是可以调整修改的。
图3为本申请实施例提供的一种电子设备的软件结构示意图。如图3所示,电子设备的软件结构可以是分层架构,例如可以将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将操作系统分为四层,从上至下分别为应用程序层,应用程序框架层(framework,FWK),运行时(runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包(application package)。如图3所示,应用程序层可以包括相机、设置、皮肤模块、用户界面(user interface,UI)、三方应用程序等。其中,三方应用程序可以包括图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层可以包括一些预先定义的函数。如图3所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
运行时包括核心库和虚拟机。运行时负责操作系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是操作系统的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
硬件层可以包括各类传感器,例如加速度传感器、重力传感器、触摸传感器等。
下面对本申请实施例提供的进程间通信方法进行进一步介绍。
本申请实施例提供的进程间通信方法的执行过程至少包括系统服务访问引用存储、系统服务通知注册、系统服务信息存储三个阶段。下面分别对各个阶段的方法进行详细说明。
一、系统服务访问引用存储
电子设备上安装的应用用于向用户提供一个或者多个功能,即应用是指完成一个或者多个功能的计算机程序,应用可以包括两部分计算机程序,一部分是电子设备自带的计算机程序,另一部分是第三方设备提供的计算机程序。可以理解的是,应用包括的全部计算机程序也可以都是第三方设备提供的,本申请实施例对此不做具体限制。
应用以一个或多个进程的形式运行在电子设备使用的操作系统(例如安卓系统)上,应用在运行过程中,需要访问安卓系统中的一个或多个系统服务完成一些功能,即应用需要与安卓系统中的一个或多个系统服务之间进行进程间通信。
安卓系统常用的进程间通信机制为Binder通信机制,当安卓系统使用Binder通信机制时,应用作为Binder通信的客户端,也称为客户端进程,客户端进程是使用系统服务的进程,系统服务作为Binder通信的服务端,也称为服务端进程,服务端进程是提供系统服务的进程。
客户端进程可以通过Binder驱动访问一个或多个服务端进程所提供的系统服务,而客户端进程在通过Binder驱动访问任一服务端进程所提供的系统服务之前,需要通过Binder驱动从服务管理器处获取该服务端进程所提供的系统服务的访问引用。
在本申请实施例中,当客户端进程初次访问任一服务端进程所提供的系统服务时,客户端进程可以通过Binder驱动,从服务管理器处获取该服务端进程所提供的系统服务的访问引用,如果获取成功,则客户端进程可以将该服务端进程所提供的系统服务的访问引用,存储在客户端进程的内存中(即客户端进程的用户空间中)。
当客户端进程再次访问该服务端进程所提供的系统服务时,客户端进程可以判断客户端进程的内存中是否存储有该服务端进程所提供的系统服务的访问引用。如果客户端进程的内存中存储有该服务端进程所提供的系统服务的访问引用,则客户端进程可以直接使用存储的该服务端进程所提供的系统服务的访问引用,访问该服务端进程所提供的系统服务。如果客户端进程的内存中未存储有该服务端进程所提供的系统服务的访问引用,则客户端进程才通过Binder驱动,从服务管理器处再次获取该服务端进程所提供的系统服务的访问引用,使用获取的该服务端进程所提供的系统服务的访问引用,访问该服务端进程所提供的系统服务。
从而通过缓存系统服务访问引用的方式减少Binder通信机制的获取服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高安卓系统使用Binder通信机制的效率。
在本申请实施例中,当客户端进程将任一服务端进程所提供的系统服务的访问引用存储在客户端进程的内存中时,客户端进程可以根据该服务端进程是否与客户端进程共进程,将该服务端进程所提供的系统服务的访问引用,分类存储在客户端进程的不同内存中,例如共进程内存或异进程内存,共进程内存用于存储与客户端进程共进程的服务端进程所提供的系统服务的访问引用,异进程内存用于存储与客户端进程异进程的服务端进程所提供的系统服务的访问引用。
示例性的,图4a为本申请实施例提供的一种存储访问引用的流程示意图,如图4a所示,客户端进程在存储第一服务端进程所提供的第一系统服务的第一访问引用时,可以判断第一服务端进程是否与客户端进程共进程,如果第一服务端进程与客户端进程共进程,则将第一访问引用存储到共进程内存中,如果第一服务端进程与客户端进程异进程,则将第一访问引用存储到异进程内存中。
当客户端进程再次访问该服务端进程所提供的系统服务时,客户端进程可以判断客户端进程的共进程内存或异进程内存中是否存储有该服务端进程所提供的系统服务的访问引用。如果客户端进程的共进程内存中存储有该服务端进程所提供的系统服务的访问引用,则客户端进程可以直接使用该服务端进程所提供的系统服务的访问引用,直接访问该服务端进程所提供的系统服务,而不通过Binder驱动访问该服务端进程所提供的系统服务,即客户端进程访问该服务端进程所提供的系统服务是本地调用而不是跨进程调用。如果客户端进程的异进程内存中存储有该服务端进程所提供的系统服务的访问引用,则客户端进程可以直接使用该服务端进程所提供的系统服务的访问引用,通过Binder驱动访问该服务端进程所提供的系统服务。
从而通过分类缓存系统服务访问引用的方式减少Binder通信机制的使用服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高安卓系统使用Binder通信机制的效率。
二、系统服务通知注册
在本申请实施例中,当上述客户端进程初次访问任一服务端进程所提供的系统服务,通过Binder驱动从服务管理器处获取该服务端进程所提供的系统服务的访问引用时,如果获取失败(例如该服务端进程所提供的系统服务已死亡),则客户端进程可以在服务管理器处注册系统服务通知,系统服务通知用于指示服务管理器在该服务端进程所提供的系统服务启动或死亡后通知客户端进程。使得客户端进程可以在接收到用于指示该服务端进程所提供的系统服务已启动的通知时,才再次从服务管理器处获取该服务端进程所提供的系统服务的访问引用,避免去获取已死亡的系统服务的访问引用,保证客户端进程从服务管理器处获取该服务端进程所提供的系统服务的访问引用成功,再将从服务管理器处成功获取到的该服务端进程所提供的系统服务的访问引用,存储在客户端进程的内存中,客户端进程还可以在接收到用于指示该服务端进程所提供的系统服务已死亡的通知时,删除存储的该服务端进程所提供的系统服务的访问引用,避免去访问已死亡的系统服务,保证客户端进程使用该服务端进程所提供的系统服务的访问引用,访问该服务端进程所提供的系统服务成功。
另外,当上述客户端进程初次访问任一服务端进程所提供的系统服务,通过Binder驱动从服务管理器处获取该服务端进程所提供的系统服务的访问引用时,如果获取成功,则客户端进程也可以在服务管理器处注册系统服务通知,使得客户端进程在接收到用于指示该服务端进程所提供的系统服务已死亡的通知时,删除存储的该服务端进程所提供的系统服务的访问引用,避免去访问已死亡的系统服务,保证客户端进程使用该服务端进程所提供的系统服务的访问引用,访问该服务端进程所提供的系统服务成功。
从而通过在服务管理器上注册的系统服务通知避免去获取已死亡的系统服务的访问引用,以及避免去访问已死亡的系统服务,减少Binder通信机制的获取服务流程和使用服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高安卓系统使用Binder通信机制的效率。
示例性的,图4b为本申请实施例提供的一种访问系统服务的流程示意图,如图4b所示,客户端进程在访问第一服务端进程所提供的第一系统服务时,主要包括以下步骤1~4,以及步骤A、B、C:
步骤1:客户端进程可以判断第一内存中是否存储有第一系统服务的第一访问引用。
其中,第一内存是用于存储系统服务的访问引用的客户端进程的内存,第一内存包括共进程内存和异进程内存,共进程内存用于存储与客户端进程共进程的服务端进程所提供的系统服务的访问引用,异进程内存用于存储与客户端进程异进程的服务端进程所提供的系统服务的访问引用。
步骤2:如果第一内存中未存储有第一访问引用,则客户端进程可以判断客户端进程是否已在服务管理器上注册系统服务通知;如果第一内存中存储有第一访问引用,则客户端进程可以执行步骤A。
步骤3:如果客户端进程未在服务管理器上注册系统服务通知,则客户端进程从服务管理器处获取第一访问引用;如果客户端进程已在服务管理器上注册系统服务通知,则客户端进程可以执行步骤B。
具体的,如果第一内存中未存储有第一访问引用,且客户端进程已在服务管理器上注册系统服务通知,则客户端进程可以确定第一内存中原本就未存储有第一访问引用,此时是客户端进程初次通过Binder驱动从服务管理器处获取第一访问引用。
步骤4:如果获取成功,则客户端进程可以将第一访问引用存储在第一内存中,并使用第一访问引用访问第一系统服务;如果获取失败,则客户端进程可以执行步骤C。
具体的,如果客户端进程初次通过Binder驱动从服务管理器处获取第一访问引用时,获取成功,则客户端进程可以将第一访问引用存储在第一内存中,并通过Binder驱动使用第一访问引用访问第一系统服务。客户端进程还可以在服务管理器上注册系统服务通知,并在接收到用于指示第一系统服务已死亡的通知时,删除存储在第一内存中的第一访问引用。
步骤A:客户端进程使用存储在第一内存中的第一访问引用访问第一系统服务。
具体的,如果共进程内存中存储有第一访问引用,则客户端进程可以直接使用存储在共进程内存中的第一访问引用,直接访问第一系统服务,而不通过Binder驱动访问第一系统服务。如果异进程内存中存储有第一访问引用,则客户端进程可以直接使用存储在异进程内存中的第一访问引用,通过Binder驱动访问第一系统服务。
步骤B:客户端进程在接收到用于指示第一系统服务已启动的通知时,从服务管理器处获取第一访问引用。
具体的,如果第一内存中未存储有第一访问引用,但客户端进程已在服务管理器上注册系统服务通知,则客户端进程可以确定第一内存中原本存储有第一访问引用,但是已被客户端进程在接收到用于指示第一系统服务已死亡的通知时从第一内存中删除,因此客户端进程为了避免去获取已死亡的系统服务的访问引用,可以在接收到用于指示第一系统服务已启动的通知时,才再次通过Binder驱动从服务管理器处获取第一访问引用。
步骤C:客户端进程在服务管理器上注册系统服务通知,并在接收到用于指示第一系统服务已启动的通知时,从服务管理器处获取第一访问引用。
具体的,如果客户端进程初次通过Binder驱动从服务管理器处获取第一访问引用时,获取失败,则客户端进程为了避免去获取已死亡的系统服务的访问引用,可以在服务管理器上注册系统服务通知,并在接收到指第一系统服务已启动的通知时,才再次通过Binder驱动从服务管理器处获取第一访问引用。
三、系统服务信息存储
在本申请实施例中,当上述客户端进程使用任一服务端进程所提供的系统服务的访问引用,访问该服务端进程所提供的系统服务时,客户端进程可以得到该服务端进程所提供的系统服务的信息,系统服务的信息为系统服务能够提供的功能的信息,并将该服务端进程所提供的系统服务的信息存储在客户端进程的内存中,使得客户端进程下次可以直接使用存储的该服务端进程所提供的系统服务的信息,实现该服务端进程所提供的系统服务能够提供的功能,不需要再重新去获取该服务端进程所提供的系统服务的访问引用,以及再重新使用该服务端进程所提供的系统服务的访问引用,访问该服务端进程所提供的系统服务。
从而通过缓存系统服务信息的方式减少Binder通信机制的获取服务流程和使用服务流程中的跨进程调用的次数,进而减少进程上下文切换的次数,提高电子设备的安卓系统使用Binder通信机制时的通信效率。
在本申请实施例中,当客户端进程直接使用存储的该服务端进程所提供的系统服务的信息,实现该服务端进程所提供的系统服务的功能时,可以判断该服务端进程所提供的系统服务是否被更新,例如判断该服务端进程是否更新该服务端进程所提供的系统服务的状态标识。
如果确定该服务端进程所提供的系统服务未被更新,客户端进程可以使用存储的该服务端进程所提供的系统服务的信息,实现该服务端进程所提供的系统服务的功能。
如果确定该服务端进程所提供的系统服务已被更新,客户端进程可以再次访问该服务端进程所提供的系统服务,得到该服务端进程所提供的已被更新的系统服务的信息,使用该服务端进程所提供的已被更新的系统服务的信息,实现该服务端进程所提供的已被更新的系统服务能够提供的功能,并更新存储的该服务端进程所提供的系统服务的信息。
示例性的,图4c为本申请实施例提供的一种实现系统服务的功能的流程示意图,如图4c所示,客户端进程在实现第一服务端进程所提供的第一系统服务的功能时,主要包括以下步骤a~d:
步骤a:客户端进程可以判断第二内存中是否存储有第一系统服务能够提供的功能的第一信息。
其中,第二内存是用于存储系统服务能够提供的功能的信息的客户端进程的内存。
步骤b:如果第二内存中存储有第一信息,则客户端进程可以判断第一服务端进程是否已更新第一系统服务的状态标识。
其中,第一系统服务的状态标识用于指示第一系统服务是否已被更新,例如,第一系统服务的状态标识为1,指示第一系统服务已被更新,第一系统服务的状态标识为0,指示第一系统服务未被更新,而客户端进程每次访问第一系统服务得到第一系统服务能够提供的功能的信息之后,第一系统服务都会将第一系统服务的状态标识初始化为0。
步骤c:如果第一服务端进程未更新第一系统服务的状态标识,则客户端进程可以使用存储在第二内存中的第一信息,实现第一系统服务能够提供的功能。
具体的,如果第一服务端进程未更新第一系统服务的状态标识,例如,第一系统服务的状态标识为0,则客户端进程可以确定第一系统服务未被更新。
步骤d:如果第一服务端进程已更新第一系统服务的状态标识,则客户端进程可以访问第一系统服务得到第一系统服务能够提供的功能的第二信息,使用第二信息实现第一系统服务能够提供的功能,并将第二内存中的第一信息更新为第二信息。
具体的,如果第一服务端进程已更新第一系统服务的状态标识,例如,第一系统服务的状态标识为1,客户端进程可以确定第一系统服务已被更新。
基于以上实施例,本申请还提供一种进程间通信方法。该方法可以由图2-图3所示的电子设备的安卓系统中的客户端进程执行。图5为本申请实施例提供的一种进程间通信方法的流程示意图。参考图5,该方法包括以下步骤:
S501:客户端进程使用第一访问引用访问第一系统服务,得到第一信息。
其中,第一访问引用存储在客户端进程的第一内存中,第一访问引用为第一服务端进程所提供的第一系统服务的访问引用,第一信息包括第一系统服务能够提供的功能的信息。
S501在具体执行“客户端进程使用第一访问引用访问第一系统服务”时主要包括以下步骤:
如果第一访问引用存储在第一内存包括的共进程内存中,客户端进程直接使用第一访问引用访问第一系统服务。或者,如果第一访问引用存储在第一内存包括的异进程内存中,客户端进程通过Binder驱动使用第一访问引用访问第一系统服务。
其中,共进程内存用于存储与所述客户端进程共进程的服务端进程所提供的系统服务的访问引用,异进程内存用于存储与客户端进程异进程的服务端进程所提供的系统服务的访问引用。
S502:客户端进程将第一信息存储在客户端进程的第二内存中。
S502在具体执行“客户端进程将第一信息存储在客户端进程的第二内存中”之后,还包括以下步骤:
如果第一服务端进程未更新第一系统服务,客户端进程使用存储在第二内存中的第一信息实现第一系统服务能够提供的功能。或者,如果第一服务端进程已更新第一系统服务,客户端进程使用第一访问引用访问第一系统服务,得到第二信息,使用第二信息实现第一系统服务能够提供的功能,并将存储在第二内存中的第一信息更新为第二信息。
其中,第二信息包括已更新的第一系统服务能够提供的功能的信息。
上述步骤的具体执行可参照上述实施例中的相关介绍,本实例中不再赘述。
需要说明的是,上述实例提供的具体实施流程,仅是对本申请实施例适用方法流程的举例说明,其中各步骤的执行顺序可根据实际需求进行相应调整,还可以增加其它步骤,或减少部分步骤。
基于以上实施例,本申请还提供一种进程间通信方法。该方法可以由图2-图3所示的电子设备的安卓系统中的客户端进程执行。图6为本申请实施例提供的另一种进程间通信方法的流程示意图。参考图6,该方法包括以下步骤:
S601:客户端进程确定客户端进程的第一内存中未存储第一访问引用,以及客户端进程未在服务管理器上注册系统服务通知。
其中,第一访问引用为第一服务端进程所提供的第一系统服务的访问引用,系统服务通知用于指示服务管理器在第一系统服务启动或死亡后通知客户端进程。
S602:客户端进程从服务管理器获取第一访问引用。
S603:如果客户端进程获取第一访问引用成功,客户端进程将第一访问引用存储在第一内存中。
S603在具体执行“客户端进程将第一访问引用存储在第一内存中”之后,还包括以下步骤:
如果客户端进程未在服务管理器上注册系统服务通知,客户端进程在服务管理器上注册系统服务通知。
客户端进程在接收到用于指示第一系统服务已死亡的通知时,删除第一内存中存储的第一访问引用。
上述步骤的具体执行可参照上述实施例中的相关介绍,本实例中不再赘述。
需要说明的是,上述实例提供的具体实施流程,仅是对本申请实施例适用方法流程的举例说明,其中各步骤的执行顺序可根据实际需求进行相应调整,还可以增加其它步骤,或减少部分步骤。
基于以上实施例,本申请还提供一种进程间通信方法。该方法可以由图2-图3所示的电子设备的安卓系统中的客户端进程执行。图7为本申请实施例提供的又一种进程间通信方法的流程示意图。参考图7,该方法包括以下步骤:
S701:客户端进程确定客户端进程的第一内存中未存储第一访问引用,以及客户端进程未在服务管理器上注册系统服务通知。
其中,第一访问引用为第一服务端进程所提供的第一系统服务的访问引用,系统服务通知用于指示服务管理器在第一系统服务启动或死亡后通知客户端进程。
S702:客户端进程从服务管理器获取第一访问引用。
S703:如果客户端进程获取第一访问引用失败,客户端进程在服务管理器上注册系统服务通知,并在接收到用于指示第一系统服务已启动的通知时,从服务管理器获取第一访问引用,以及,将第一访问引用存储在第一内存中。
S702在具体执行“客户端进程将第一访问引用存储在第一内存中”之后,还包括以下步骤:
如果客户端进程未在服务管理器上注册系统服务通知,客户端进程在服务管理器上注册系统服务通知。
客户端进程在接收到用于指示第一系统服务已死亡的通知时,删除第一内存中存储的第一访问引用。
上述步骤的具体执行可参照上述实施例中的相关介绍,本实例中不再赘述。
需要说明的是,上述实例提供的具体实施流程,仅是对本申请实施例适用方法流程的举例说明,其中各步骤的执行顺序可根据实际需求进行相应调整,还可以增加其它步骤,或减少部分步骤。
基于以上实施例,本申请还提供一种进程间通信方法。该方法可以由图2-图3所示的电子设备的安卓系统中的客户端进程执行。图8为本申请实施例提供的又一种进程间通信方法的流程示意图。参考图8,该方法包括以下步骤:
S801:客户端进程确定客户端进程的第一内存中未存储第一访问引用,以及客户端进程已在服务管理器上注册系统服务通知。
其中,第一访问引用为第一服务端进程所提供的第一系统服务的访问引用,系统服务通知用于指示服务管理器在第一系统服务启动或死亡后通知客户端进程。
S802:客户端进程在接收到用于指示第一系统服务已启动的通知时,从服务管理器获取第一访问引用,并将第一访问引用存储在第一内存中。
S802在具体执行“客户端进程并将第一访问引用存储在第一内存中”之后,主要包括以下步骤:
客户端进程在接收到用于指示第一系统服务已死亡的通知时,删除第一内存中存储的第一访问引用。
上述步骤的具体执行可参照上述实施例中的相关介绍,本实例中不再赘述。
需要说明的是,上述实例提供的具体实施流程,仅是对本申请实施例适用方法流程的举例说明,其中各步骤的执行顺序可根据实际需求进行相应调整,还可以增加其它步骤,或减少部分步骤。
基于以上实施例及相同构思,本申请实施例还提供一种电子设备,该电子设备用于实现本申请实施例提供的电子设备的安卓系统中的客户端进程所执行的方法。
如图9中所示,电子设备900可以包括:存储器901,一个或多个处理器902,以及一个或多个计算机程序(图中未示出)。上述各器件可以通过一个或多个通信总线903耦合。可选的,当电子设备900用于实现本申请实施例提供的电子设备的安卓系统中的客户端进程所执行的方法时,电子设备900还可以包括显示屏904。
其中,存储器901中存储有一个或多个计算机程序(代码),一个或多个计算机程序包括计算机指令;一个或多个处理器902调用存储器901中存储的计算机指令,使得电子设备900执行本申请实施例提供的进程间通信方法。显示屏904用于显示图像、视频、应用界面等相关用户界面。
具体实现中,存储器901可包括高速随机存取的存储器,并且也可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。存储器901可以存储操作系统(下述简称系统),例如ANDROID,IOS,WINDOWS,或者LINUX等嵌入式操作系统。存储器901可用于存储本申请实施例的实现程序。存储器901还可以存储网络通信程序,该网络通信程序可用于与一个或多个附加设备,一个或多个用户设备,一个或多个网络设备进行通信。一个或多个处理器902可以是一个通用中央处理器(central processingunit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
需要说明的是,图9仅仅是本申请实施例提供的电子设备900的一种实现方式,实际应用中,电子设备900还可以包括更多或更少的部件,这里不作限制。
基于以上实施例及相同构思,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当计算机程序在计算机上运行时,使得计算机执行上述实施例提供的方法中由电子设备的安卓系统中的客户端进程所执行的方法。
基于以上实施例及相同构思,本申请实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行上述实施例提供的方法中由电子设备的安卓系统中的客户端进程所执行的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (23)
1.一种进程间通信方法,其特征在于,包括:
客户端进程使用第一访问引用访问第一系统服务,得到第一信息,其中,所述第一访问引用存储在所述客户端进程的第一内存中,所述第一访问引用为第一服务端进程所提供的所述第一系统服务的访问引用,所述第一信息包括所述第一系统服务能够提供的功能的信息;
所述客户端进程将所述第一信息存储在所述客户端进程的第二内存中。
2.如权利要求1所述的方法,其特征在于,所述客户端进程使用第一访问引用访问第一系统服务,包括:
如果所述第一访问引用存储在所述第一内存包括的共进程内存中,所述客户端进程直接使用所述第一访问引用访问所述第一系统服务,其中,所述共进程内存用于存储与所述客户端进程共进程的服务端进程所提供的系统服务的访问引用;或者,
如果所述第一访问引用存储在所述第一内存包括的异进程内存中,所述客户端进程通过Binder驱动使用所述第一访问引用访问所述第一系统服务,其中,所述异进程内存用于存储与所述客户端进程异进程的服务端进程所提供的系统服务的访问引用。
3.如权利要求1或2所述的方法,其特征在于,在所述客户端进程将所述第一信息存储在所述客户端进程的第二内存中之后,还包括:
如果所述第一服务端进程未更新所述第一系统服务,所述客户端进程使用存储在所述第二内存中的所述第一信息实现所述第一系统服务能够提供的功能;或者,
如果所述第一服务端进程已更新所述第一系统服务,所述客户端进程使用所述第一访问引用访问所述第一系统服务,得到第二信息,使用所述第二信息实现所述第一系统服务能够提供的功能,并将存储在所述第二内存中的所述第一信息更新为所述第二信息,其中,所述第二信息包括所述已更新的所述第一系统服务能够提供的功能的信息。
4.如权利要求1-3任一所述的方法,其特征在于,还包括:
所述客户端进程从所述服务管理器获取所述第一访问引用;
如果所述客户端进程获取所述第一访问引用成功,所述客户端进程将所述第一访问引用存储在所述第一内存中。
5.如权利要求1-3任一所述的方法,其特征在于,还包括:
所述客户端进程从所述服务管理器获取所述第一访问引用;
如果所述客户端进程获取所述第一访问引用失败,所述客户端进程在所述服务管理器上注册系统服务通知,并在接收到用于指示第一系统服务已启动的通知时,从所述服务管理器获取所述第一访问引用,以及,将所述第一访问引用存储在所述第一内存中,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
6.如权利要求4或5所述的方法,其特征在于,在所述客户端进程从所述服务管理器获取所述第一访问引用之前,还包括:
所述客户端进程确定所述第一内存中未存储所述第一访问引用,以及所述客户端进程未在服务管理器上注册系统服务通知,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
7.如权利要求4-6任一所述的方法,其特征在于,在所述客户端进程将所述第一访问引用存储在所述第一内存中之后,还包括:
如果所述客户端进程未在所述服务管理器上注册系统服务通知,所述客户端进程在所述服务管理器上注册所述系统服务通知。
8.如权利要求4或5所述的方法,其特征在于,在所述客户端进程从所述服务管理器获取所述第一访问引用之前,还包括:
所述客户端进程确定所述第一内存中未存储所述第一访问引用,以及所述客户端进程已在所述服务管理器上注册系统服务通知,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
9.如权利要求8所述的方法,其特征在于,所述客户端进程从所述服务管理器获取所述第一访问引用,包括:
所述客户端进程在接收到用于指示所述第一系统服务已启动的通知时,从所述服务管理器获取所述第一访问引用,并将所述第一访问引用存储在所述第一内存中。
10.如权利要求4-9任一所述的方法,其特征在于,在所述客户端进程将所述第一访问引用存储在所述第一内存中之后,还包括:
所述客户端进程在接收到用于指示所述第一系统服务已死亡的通知时,删除所述第一内存中存储的所述第一访问引用。
11.一种进程间通信装置,其特征在于,包括:
使用模块,用于:使用第一访问引用访问第一系统服务,得到第一信息,其中,所述第一访问引用存储在客户端进程的第一内存中,所述第一访问引用为第一服务端进程所提供的所述第一系统服务的访问引用,所述第一信息包括所述第一系统服务能够提供的功能的信息;
处理模块,用于:将所述第一信息存储在所述客户端进程的第二内存中。
12.如权利要求11所述的装置,其特征在于,所述使用模块,具体用于:
如果所述第一访问引用存储在所述第一内存包括的共进程内存中,直接使用所述第一访问引用访问所述第一系统服务,其中,所述共进程内存用于存储与所述客户端进程共进程的服务端进程所提供的系统服务的访问引用;或者,
如果所述第一访问引用存储在所述第一内存包括的异进程内存中,通过Binder驱动使用所述第一访问引用访问所述第一系统服务,其中,所述异进程内存用于存储与所述客户端进程异进程的服务端进程所提供的系统服务的访问引用。
13.如权利要求11或12所述的装置,其特征在于,在将所述第一信息存储在所述客户端进程的第二内存中之后,所述处理模块还用于:
如果所述第一服务端进程未更新所述第一系统服务,使用存储在所述第二内存中的所述第一信息实现所述第一系统服务能够提供的功能;或者,
如果所述第一服务端进程已更新所述第一系统服务,使用所述第一访问引用访问所述第一系统服务,得到第二信息,使用所述第二信息实现所述第一系统服务能够提供的功能,并将存储在所述第二内存中的所述第一信息更新为所述第二信息,其中,所述第二信息包括所述已更新的所述第一系统服务能够提供的功能的信息。
14.如权利要求11-13任一所述的装置,其特征在于,所述装置还包括第一获取模块,用于:
从所述服务管理器获取所述第一访问引用;
如果获取所述第一访问引用成功,将所述第一访问引用存储在所述第一内存中。
15.如权利要求11-13任一所述的装置,其特征在于,所述装置还包括第二获取模块,用于:
从所述服务管理器获取所述第一访问引用;
如果获取所述第一访问引用失败,在所述服务管理器上注册系统服务通知,并在接收到用于指示第一系统服务已启动的通知时,从所述服务管理器获取所述第一访问引用,以及,将所述第一访问引用存储在所述第一内存中,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
16.如权利要求14或15所述的装置,其特征在于,在从所述服务管理器获取所述第一访问引用之前,所述第一获取模块或所述第二获取模块还用于:
确定所述第一内存中未存储所述第一访问引用,以及所述客户端进程未在服务管理器上注册系统服务通知,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
17.如权利要求14-16任一所述的装置,其特征在于,在将所述第一访问引用存储在所述第一内存中之后,所述第一获取模块或所述第二获取模块还用于:
如果所述客户端进程未在所述服务管理器上注册系统服务通知,所述客户端进程在所述服务管理器上注册所述系统服务通知。
18.如权利要求14或15所述的装置,其特征在于,在从所述服务管理器获取所述第一访问引用之前,所述第一获取模块或所述第二获取模块还用于:
确定所述第一内存中未存储所述第一访问引用,以及所述客户端进程已在所述服务管理器上注册系统服务通知,其中,所述系统服务通知用于指示所述服务管理器在所述第一系统服务启动或死亡后通知所述客户端进程。
19.如权利要求18所述的装置,其特征在于,从所述服务管理器获取所述第一访问引用,所述第一获取模块或所述第二获取模块具体用于:
在接收到用于指示所述第一系统服务已启动的通知时,从所述服务管理器获取所述第一访问引用,以及,将所述第一访问引用存储在所述第一内存中。
20.如权利要求14-19任一所述的装置,其特征在于,在将所述第一访问引用存储在所述第一内存中之后,所述第一获取模块或所述第二获取模块还用于:
在接收到用于指示所述第一系统服务已死亡的通知时,删除所述第一内存中存储的所述第一访问引用。
21.一种电子设备,其特征在于,包括:
处理器,存储器,以及,一个或多个程序;
其中,所述一个或多个程序被存储在所述存储器中,所述一个或多个程序包括指令,当所述指令被所述处理器执行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-10中任一项所述的方法。
23.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如上述权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211003374.XA CN117632534A (zh) | 2022-08-19 | 2022-08-19 | 一种进程间通信方法与电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211003374.XA CN117632534A (zh) | 2022-08-19 | 2022-08-19 | 一种进程间通信方法与电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117632534A true CN117632534A (zh) | 2024-03-01 |
Family
ID=90025843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211003374.XA Pending CN117632534A (zh) | 2022-08-19 | 2022-08-19 | 一种进程间通信方法与电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117632534A (zh) |
-
2022
- 2022-08-19 CN CN202211003374.XA patent/CN117632534A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4002108B1 (en) | Application start method and electronic device | |
WO2022089207A1 (zh) | 一种跨设备应用交互方法、电子设备与服务器 | |
CN114968384B (zh) | 一种功能调用方法和装置 | |
WO2021073337A1 (zh) | 安装插件的方法、装置和存储介质 | |
CN112860445B (zh) | 一种快应用与原生应用间数据共享的方法及终端 | |
EP4199474A1 (en) | Method and system for acquiring download information of application, and server and storage medium | |
CN115309431B (zh) | 一种参数更新方法、可读介质和电子设备 | |
CN114461239B (zh) | 软件升级系统和软件升级方法 | |
CN117632534A (zh) | 一种进程间通信方法与电子设备 | |
CN113835802A (zh) | 设备交互方法、系统、设备及计算机可读存储介质 | |
CN116089056B (zh) | 用于图像绘制的方法及相关装置 | |
WO2023061014A1 (zh) | 任务管理方法及装置 | |
CN116662150B (zh) | 应用启动耗时检测方法及相关装置 | |
CN114896097B (zh) | 一种应用程序无响应处理方法及电子设备 | |
CN116033333B (zh) | 确定位置信息的方法、电子设备及可读存储介质 | |
WO2024093795A1 (zh) | 一种设备替换的配置方法及装置 | |
WO2022267786A1 (zh) | 一种快捷图标展示方法与终端设备 | |
CN117241234A (zh) | 一种卫星短报文通信计费校准方法和设备 | |
CN117729561A (zh) | 系统升级方法、终端及存储介质 | |
CN118057798A (zh) | 一种应用分享方法及电子设备 | |
CN116846853A (zh) | 一种信息处理方法及电子设备 | |
CN117527822A (zh) | 数据同步方法、电子设备及系统 | |
CN117708801A (zh) | 一种资源访问方法及电子设备 | |
CN118034823A (zh) | 显示方法、电子设备、存储介质及程序产品 | |
CN116679895A (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 |