CN115202902B - 控制进程交互的方法及相关装置 - Google Patents
控制进程交互的方法及相关装置 Download PDFInfo
- Publication number
- CN115202902B CN115202902B CN202210764724.8A CN202210764724A CN115202902B CN 115202902 B CN115202902 B CN 115202902B CN 202210764724 A CN202210764724 A CN 202210764724A CN 115202902 B CN115202902 B CN 115202902B
- Authority
- CN
- China
- Prior art keywords
- data
- target information
- information
- application
- binder
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例提供控制进程交互的方法及相关装置,涉及终端技术领域。方法包括:终端设备确定第一进程向第二进程调取目标信息;向第一进程传输目标信息中的第一数据;其中,第一数据包括目标信息中的第一部分信息,第一数据的大小不超过预设值,其中,第一进程和第二进程基于binder机制通信。这样,可以在binder机制中支持分批传输数据,使得binder交互中的数据不会过大,改善因binder中数据过大导致binder内存耗尽产生的应用程序异常退出现象。
Description
技术领域
本申请涉及终端技术领域,尤其涉及一种控制进程交互的方法及相关装置。
背景技术
随着终端技术的发展,终端设备中能够支持的应用程序(application,APP)越来越多。终端设备中的***服务与应用程序之间、不同应用程序之间等可以基于进程进行通信。例如,IPC(inter-process communication,进程间通信)是一种在不同进程之间传播或交换信息的一种通信方式。
一些实现中,binder是IPC的重要环节,例如,进程A调用进程B的信息时,进程A可以基于binder机制中的binder通信和binder驱动实现对进程B的调用。
但是上述实现中,会存在导致终端设备的应用程序异常退出的现象。
发明内容
本申请实施例提供一种控制进程交互的方法及相关装置,可以在binder机制中支持按照组件信息分批传输数据,使得binder交互中的数据不会过大,改善因binder中数据过大导致binder内存耗尽产生的应用程序异常退出现象。
第一方面,本申请实施例提供一种控制进程交互的方法,应用于运行有第一进程和第二进程的终端设备,第一进程和第二进程基于binder机制通信,方法包括:
确定第一进程向第二进程调取目标信息;向第一进程传输目标信息中的第一数据;其中,第一数据包括目标信息中的第一部分信息,第一数据的大小不超过预设值。这样,可以在binder机制中支持分批传输数据,使得binder交互中的数据不会过大,改善因binder中数据过大导致binder内存耗尽产生的应用程序异常退出现象。
一种可能的实现方式中,第一部分信息至少包括activity。这样可以使得重要的activity得到传输。
一种可能的实现方式中,第一部分信息为:按照目标信息中的activity、service、broadcast、providers从前到后的顺序,选择得到的小于或等于预设值的部分。这样,可以使得第一数据的大小不超过预设值,且使得重要数据得到传输。
一种可能的实现方式中,确定第一进程向第二进程调取目标信息之前,还包括:获取目标信息对应的应用组件个数;根据应用组件个数确定第一进程向第二进程发送调用目标信息的指令的次数;其中,第一进程每向第二进程发送一次调用目标信息的指令,第二进程向第一进程返回一次数据,任一次返回的数据的大小不超过预设值。这样可以基于应用组件个数确定第二进程将分多少批完成全部数据传输,使得第二进程能完整的向第一进程传输目标信息。
一种可能的实现方式中,向第一进程传输目标信息中的第一数据之后,还包括:第一进程向第二进程发送调用目标信息的指令;第二进程向第一进程传输目标信息中的第二数据,第二数据包括目标信息中的第二部分信息,第二数据的大小不超过预设值。这样可以使得第二进程能完整的向第一进程传输目标信息。
一种可能的实现方式中,第一进程根据应用组件个数确定向第二进程发送调用目标信息的指令的次数,包括:当应用组件个数大于个数阈值时,第一进程根据应用组件个数确定向第二进程发送调用目标信息的指令的次数。第一进程获取第二进程中目标信息对应的应用组件个数,包括:第一进程基于getPackageInfoComponentCount获取第二进程中目标信息对应的应用组件个数。这样,当应用组件个数大于个数阈值时,第一进程根据应用组件个数确定向第二进程发送调用目标信息的指令的次数,并执行后续的分批次传输,使得binder交互中的数据不会过大,改善因binder中数据过大导致binder内存耗尽产生的应用程序异常退出现象。
一种可能的实现方式中,第一数据中携带有第一值,第一值为第二进程将向第一进程传输的数据的总批次。这样,第一进程可以知道第二进程将向第一进程传输多少批次数据,则后续第一进程可以校验是否发生漏传,第一进程也可以知道第二进程是否完成数据传输。
一种可能的实现方式中,向第一进程传输目标信息中的第一数据之后,还包括:向第一进程传输目标信息中的第N数据,直到第二进程将目标信息中的组件信息分批次传输完成;其中,第N数据包括目标信息中的部分信息,第N数据的大小不超过预设值。这样,第二进程向第一进程传输第一数据后,还可以接着自动向第一进程继续传输目标信息中的其它数据,每次传输的数据大小不超过预设值即可,可以节约信令资源。
一种可能的实现方式中,第一数据和/或第N数据还携带有第二值,第二值为第一数据或第N数据在总批次中的具体批次值。这样,第一进程在得到第二进程传输的数据后,可以基于个数据的具体批次值对数据排序,或者检查是否有数据遗漏,以及具体遗漏的那批数据,便于后续重传等。
第二方面,本申请实施例提供一种控制进程交互的装置,该控制进程交互的装置可以是终端设备,也可以是终端设备内的芯片或者芯片***。该控制进程交互的装置可以包括处理单元和集成电路IC。处理单元用于实现第一方面或第一方面的任意一种可能的实现方式中与处理相关的任意方法。当该控制进程交互的装置是终端设备时,该处理单元可以是处理器。该控制进程交互的装置还可以包括存储单元,该存储单元可以是存储器。该存储单元用于存储指令,该处理单元执行该存储单元所存储的指令,以使该终端设备实现第一方面或第一方面的任意一种可能的实现方式中描述的一种方法。当该控制进程交互的装置是终端设备内的芯片或者芯片***时,该处理单元可以是处理器。该处理单元执行存储单元所存储的指令,以使该终端设备实现第一方面或第一方面的任意一种可能的实现方式中描述的一种方法。该存储单元可以是该芯片内的存储单元(例如,寄存器、缓存等),也可以是该终端设备内的位于该芯片外部的存储单元(例如,只读存储器、随机存取存储器等)。
示例性的,处理单元,用于确定第一进程向第二进程调取目标信息;向第一进程传输目标信息中的第一数据;其中,第一数据包括目标信息中的第一部分信息,第一数据的大小不超过预设值。
一种可能的实现方式中,第一部分信息至少包括activity。
一种可能的实现方式中,第一部分信息为:按照目标信息中的activity、service、broadcast、providers从前到后的顺序,选择得到的小于或等于预设值的部分。
一种可能的实现方式中,处理单元,还用于获取目标信息对应的应用组件个数;根据应用组件个数确定第一进程向第二进程发送调用目标信息的指令的次数;其中,第一进程每向第二进程发送一次调用目标信息的指令,第二进程向第一进程返回一次数据,任一次返回的数据的大小不超过预设值。
一种可能的实现方式中,处理单元,还用于第一进程向第二进程发送调用目标信息的指令;第二进程向第一进程传输目标信息中的第二数据,第二数据包括目标信息中的第二部分信息,第二数据的大小不超过预设值。
一种可能的实现方式中,处理单元,具体用于当应用组件个数大于个数阈值时,第一进程根据应用组件个数确定向第二进程发送调用目标信息的指令的次数。处理单元,具体还用于第一进程基于getPackageInfoComponentCount获取第二进程中目标信息对应的应用组件个数。
一种可能的实现方式中,第一数据中携带有第一值,第一值为第二进程将向第一进程传输的数据的总批次。
一种可能的实现方式中,处理单元,还用于向第一进程传输目标信息中的第N数据,直到第二进程将目标信息中的组件信息分批次传输完成;其中,第N数据包括目标信息中的部分信息,第N数据的大小不超过预设值。
一种可能的实现方式中,第一数据和/或第N数据还携带有第二值,第二值为第一数据或第N数据在总批次中的具体批次值。
第三方面,本申请实施例提供一种电子设备,括处理器和存储器,存储器用于存储代码指令,处理器用于运行代码指令,以执行第一方面或第一方面的任意一种可能的实现方式中描述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的控制进程交互的方法。
第五方面,本申请实施例提供一种包括计算机程序的计算机程序产品,当计算机程序在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的控制进程交互的方法。
第六方面,本申请提供一种芯片或者芯片***,该芯片或者芯片***包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行第一方面或第一方面的任意一种可能的实现方式中描述的控制进程交互的方法。其中,芯片中的通信接口可以为输入/输出接口、管脚或电路等。
在一种可能的实现中,本申请中上述描述的芯片或者芯片***还包括至少一个存储器,该至少一个存储器中存储有指令。该存储器可以为芯片内部的存储单元,例如,寄存器、缓存等,也可以是该芯片的存储单元(例如,只读存储器、随机存取存储器等)。
应当理解的是,本申请的第二方面至第六方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例提供的一种电子设备的结构示意图;
图2为本申请实施例提供的一种电子设备的软件框架示意图
图3为本申请实施例提供的一种控制进程交互的的流程示意图;
图4为本申请实施例提供的一种控制进程交互的的指令示意图;
图5为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,以下,对本申请实施例中所涉及的部分术语和技术进行简单介绍:
1、Binder:是安卓(Android)***中进程间通讯(IPC)的一种方式,也是Android***中重要的特性之一。Android***中不同的App等可以运行在不同的进程中,Binder是这些进程间通信的桥梁。具体的,Android***中包括四大组件:界面(Activity),服务(Service),广播(Broadcast)和内容(Content),Binder可以把***中各个组件粘合在一起,基于各组件实现进程间的通信。
2、异步调用:应用向binder驱动发送数据后不需要挂起线程等待binder驱动的回复,而是直接结束。例如,客户端(Client端)调用IPlayer.start(),而且服务端(Server端)的启动(start)需要执行2秒,由于定义的接口是异步的,Client端可以快速的执行IPlayer.start(),不会被Server端拖延2秒。
3、同步调用:应用向binder驱动发送数据后需要挂起线程等待binder驱动的回复。例如,Client端调用IPlayer.getVolume(),而且Server端的getVolume需要执行1秒,由于定义的接口是同步的,Client端在执行IPlayer.getVolume()的时候,会被Server端拖延1秒。
4、其他术语
在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a--c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
5、终端设备
本申请实施例的终端设备也可以为任意形式的电子设备,例如,电子设备可以包括具有图像处理功能的手持式设备、车载设备等。例如,一些电子设备为:手机(mobilephone)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、蜂窝电话、无绳电话、会话启动协议(session initiation protocol,SIP)电话、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。
作为示例而非限定,在本申请实施例中,该电子设备还可以是可穿戴设备。可穿戴设备也可以称为穿戴式智能设备,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。
此外,在本申请实施例中,电子设备还可以是物联网(internet of things,IoT)***中的终端设备,IoT是未来信息技术发展的重要组成部分,其主要技术特点是将物品通过通信技术与网络连接,从而实现人机互连,物物互连的智能化网络。
本申请实施例中的电子设备也可以称为:终端设备、用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置等。
在本申请实施例中,电子设备或各个网络设备包括硬件层、运行在硬件层之上的操作***层,以及运行在操作***层上的应用层。该硬件层包括中央处理器(centralprocessing unit,CPU)、内存管理单元(memory management unit,MMU)和内存(也称为主存)等硬件。该操作***可以是任意一种或多种通过进程(process)实现业务处理的计算机操作***,例如,Linux操作***、Unix操作***、Android操作***、iOS操作***或windows操作***等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用。
示例性的,图1示出了电子设备的结构示意图。
电子设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial 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等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备的具体限定。在本申请另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在本申请另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
电子设备可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备的各种功能应用以及数据处理。例如,可以执行本申请实施例的控制进程交互的方法。
在终端设备运行时,除了需要上述图1所示的部分或全部硬件支持,还需要加载在终端设备中的软件支持。加载在终端设备中的软件可以包括***软件,还可以包括依赖于***软件实现的APP,一些APP在运行时,可能调用其它APP的信息。
应用之间调用时,可以采用binder机制。示例性的,如图2所示,以应用A对应于进程A,应用B对应于进程B为例,说明进程间基于binder通信时的大概过程示意。可以理解的是,一个进程可以对应于一个或多个应用,本申请实施例对进程中具体对应的应用个数等不作具体限定。
如图2所示,应用层中,进程A与进程B分别可以对应有各自的代理,例如代理包括IPC Thread State Tranasct binder通信实例。内核层,binder驱动可以作为各进程通信的桥梁,binder驱动可以为每个进程准备各自的内核缓冲区,映射到进程的虚拟地址空间和内核地址空间。在进程A与进程B进行binder通信时,进程A可以基于进程A的IPC ThreadState Tranasct binder通信实例与binder驱动通信,binder驱动将进程A的数据基于进程B的IPC Thread State Tranasct binder通信实例传递到进程B。可以理解,如果进程A与进程C,或进程B与进程C之间进行binder通信时,也可以采用类似的方式,不再赘述。
一些实现中,在终端设备中有APP应用安装时,***应用可能需要获取APP的组件信息。例如,***APP应用进程可以调用包管理服务(package manager service,PMS)接口,通过get application info与***服务进程(system sever进程)进行binder通信来获取该安装APP的应用组件信息,system sever进程可以进一步基于PMS get applicationinfo从PMS应用管理得到该安装应用的application info,并向***APP应用进程返回该安装应用的application info。
但是,可以理解的是,APP的更新速度较快,新的APP总是不断涌出,一些***APP或三方APP的应用组件的个数较大,例如可以达到四千个以上的activity,这样,在这些应用的APP应用进程与systemsever进程的binder通信中,会出现需要传输的组件信息达到1.3MB大小。
而binder通信的机制中,binder驱动为每个进程准备内核缓冲区通常较小,例如4M,且该4M的内核缓冲区,应用层能用到的可能只有8k-1M,其他供内核层使用。
这样binder通信中会因为传输的组件信息太大而引起调用失败返回“DeadSystem Exception”,从而引起应用crash闪退。其中,crash可以理解为客户端程序运行时遇到无法处理的错误或异常,导致退出应用程序。
另一些实现中,应用进程在相互调用时,也可能一次性传输较大数据,这样该单次较大数据也可能导致binder空间被占满,出现***卡死或应用程序异常退出的现象。
有鉴于此,本申请实施例中,可以在binder机制中支持分批传输数据,使得binder交互中的数据不会过大,改善因binder中数据过大导致binder内存耗尽产生的应用程序异常退出现象。
下面通过具体的实施例对本申请实施例的控制进程交互的方法进行详细说明。下面的实施例可以相互结合或独立实施,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
示例性的,图3示出了本申请实施例一种控制进程交互的方法。方法包括:
S301:确定第一进程向第二进程调取目标信息。
本申请实施例中,第一进程和第二进程均可以是运行在终端设备中的任意进程,第一进程可以理解为调用方进程,第二进程可以理解为被调用进程。目标信息可以是与第二进程有关的任意信息,例如目标信息可以包括第二进程对应的应用的应用组件信息等。第一进程可以基于第一进程对应的第一binder通信实例向第二进程调取目标信息。
本申请实施例对第一进程调用第二进程的时机以及作用不作限定。示例性的,在终端设备中新安装应用时,终端设备中的***进程可以调取该新安装应用的组件信息,以实现对该新安装应用的设置或管理等。或者例如,在应用A运行时,需要用到应用B中的信息,则应用A的第一进程可以调用应用B的第二进程。
需要说明的是,S301的确定第一进程向第二进程调取目标信息可以理解为第一进程发起调用第二进程的目标信息。
S302:向第一进程传输目标信息中的第一数据;其中,第一数据包括目标信息中的第一部分信息,第一数据的大小不超过预设值。
本申请实施例中,第一数据可以指目标信息中的其中一部分数据大小不超过预设值的数据。或者可以理解为,第二进程向第一进程返回目标信息时,可以将目标信息拆分,通过分批传输的方式,使得每次传输的数据大小不超过预设值。其中,预设值可以是基于经验设置的,预设值可以与binder空间的大小正相关,例如预设值可以设置为200KB-800KB的任意值,比如300KB等。
需要说明的是,本申请实施例对目标信息拆分的具体方式不作限定,可以将目标信息的全部数据按照时间戳顺序、重要程度顺序、数据类型区分等任意方式拆分,使得单次传输时数据的大小不超过预设值即可。
可能的实现中,也可以根据目标信息对应的应用组件的个数进行拆分,例如,每个应用组件大小约为0.3KB,若预设值为300KB,则单次传输的应用组件的最大个数可以设置为300KB/0.3KB=1000,则第一数据中包括的应用组件的个数不超过1000。
本申请实施例中,第二进程可以响应于第一进程的调用,基于第二进程对应的第二binder通信实例向第一进程传输目标信息对应的第一数据。
综上,本申请实施例中,可以在binder机制中支持分批传输数据,使得binder交互中的数据不会过大,改善因binder中数据过大导致binder内存耗尽产生的应用程序异常退出现象。
第一种可能的实现中,在图3的实施例的基础上,第一数据可以为目标信息中较为重要的数据,在第一进程获取到第一数据后大概能实现得到整体目标信息后类似的功能,则第二进程向第一进程传输第一数据之后,可以结束向第一进程传输数据。或者可以理解为,在第一进程向第二进程调用目标信息后,为了避免单次数据传输过大造成应用异常退出,第二进程可以向第一进程返回部分重要数据即可。
以目标信息为第二进程对应的应用的组件信息为例,组件信息可以包括activity、service、broadcast或providers的一种或多种应用组件类型,任一种类型的应用组件的数量可以为多个,activity应用组件是应用中比较关键的应用组件,因此可以先传输activity应用组件,则第一部分信息至少包括activity。这样可以使得重要的activity得到传输。
可以理解的是,在不同的应用中,activity、service、broadcast、providers四种组件对应的重要程度可能不同,因此,第一数据中可以包括activity、service、broadcast、providers四种组件中按照重要程度排序后的部分数据,使得第一数据的大小不超过预设值,且使得重要数据得到传输。
例如,第一部分信息可以为:按照目标信息中的activity、service、broadcast、providers从前到后的顺序,选择得到的小于或等于预设值的部分。
第二种可能的实现中,第二进程向第一进程传输第一数据后,可以等待第一进程的调取指令,接收到第一进程的调取指令后,再继续向第一进程传输目标信息中的其它数据,每次传输的数据大小不超过预设值即可。这样可以使得第二进程能完整的向第一进程传输目标信息。
示例性的,在第二进程向第一进程传输第一数据之前,获取目标信息对应的应用组件个数;根据应用组件个数确定第一进程向第二进程发送调用目标信息的指令的次数;其中,第一进程每向第二进程发送一次调用目标信息的指令,第二进程向第一进程返回一次数据,任一次返回的数据的大小不超过预设值。
例如,可以设计用于支持获取应用组件个数的第一接口,终端设备可以基于第一接口以及getPackageInfoComponentCount获取第二进程中目标信息对应的应用组件个数。getPackageInfoComponentCount例如可以包括getPackageInfoComponentCount(StringpackageName,int flags)。
得到目标信息对应的应用组件个数后,可以进一步根据应用组件个数确定第一进程向第二进程发送调用目标信息的指令的次数。
示例性的,得到目标信息对应的应用组件个数为M,在单次传输的组件信息总和不超过预设值时所能传的最多应用组件个数为L,则第一进程向第二进程发送调用目标信息的指令的次数可以为M/L,可以理解的是,如果M/L不为整数,则不管小数点后为任意值,均可以将进位得到的整数值作为第一进程向第二进程发送调用目标信息的指令的次数。
这样,向第一进程传输目标信息中的第一数据之后,还包括:第一进程向第二进程发送调用目标信息的指令;第二进程向第一进程传输目标信息中的第二数据,第二数据包括目标信息中的第二部分信息,第二数据的大小不超过预设值。可以理解的是,如果确定第一进程向第二进程发送调用目标信息的指令的次数大于2,则后续第一进程还会继续向第二进程发送调用目标信息的指令,第二进程继续向第一进程传输目标信息中的数据,每发一次指令传输一次数据,直到达到第一进程向第二进程发送调用目标信息的指令的次数。
可选的,第一进程根据应用组件个数确定向第二进程发送调用目标信息的指令的次数,包括:当应用组件个数大于个数阈值时,第一进程根据应用组件个数确定向第二进程发送调用目标信息的指令的次数。
本申请实施例中,个数阈值可以是单次传输的组件信息总和不超过预设值时所能传的最多应用组件个数,例如个数阈值可以为1000等。
目标信息中的应用组件的数量可能小于或等于个数阈值,这样,就可以不需要分批次传输数据,第二进程可以向第一进程返回目标信息的全部应用组件,节约计算资源。当应用组件个数大于个数阈值时,第一进程根据应用组件个数确定向第二进程发送调用目标信息的指令的次数,并执行后续的分批次传输,使得binder交互中的数据不会过大,改善因binder中数据过大导致binder内存耗尽产生的应用程序异常退出现象。
第三种可能的实现中,第二进程向第一进程传输第一数据后,还可以接着自动向第一进程继续传输目标信息中的其它数据,每次传输的数据大小不超过预设值即可。或者可以理解为,第一进程向第二进程发送一次调用目标信息的指令后,第二进程可以分批次向第一进程传输目标信息中的数据,不需要第一进程再额外发送指令。
可选的,第一数据中携带有第一值,第一值为第二进程将向第一进程传输的数据的总批次。这样,第一进程可以知道第二进程将向第一进程传输多少批次数据,则后续第一进程可以校验是否发生漏传,第一进程也可以知道第二进程是否完成数据传输。
例如,以总批次为Q为例,第一进程从第二进程接收到Q批次的数据,则可以认为目标信息获取完成,可以执行后续的步骤。或者,第一进程在预设时间长达到时,第一进程接收到来自第二进程的数据的批次没有达到Q,可以认为发生漏传。
这样,向第一进程传输目标信息中的第一数据之后,还包括:向第一进程传输目标信息中的第N数据,直到第二进程将目标信息中的组件信息分批次传输完成;其中,第N数据包括目标信息中的部分信息,第N数据的大小不超过预设值。本申请实施例中,第二进程可以自动向第一进程分批次传输数据,可以节约第一进程与第二进程之间的指令交互。
可选的,第一数据和/或第N数据还携带有第二值,第二值为第一数据或第N数据在总批次中的具体批次值。这样,第一进程在得到第二进程传输的数据后,可以基于个数据的具体批次值对数据排序,或者检查是否有数据遗漏,以及具体遗漏的那批数据,便于后续重传等。
需要说明的是,上述第二进程分批次向第一进程传输数据时,可以设计用于按照索引分批获取组件信息的第二接口,终端设备可以基于第二接口以及getPackageInfoComponents获取第二进程中目标信息对应的应用组件。getPackageInfoComponents例如可以包括getPackageInfoComponents(StringpackageName,int flags,int start,int end),end<Count&&(end-start)<1000。
示例性的,图4示出了本申请实施例一种可能的接口实现。
如图4所示,第一应用可以通过第一进程调用PMS接口,通过get package info与第二进程进行binder通信,以第二进程为***服务进程(system sever进程)为例,systemsever进程可以进一步基于PMS get package info internal从PMS应用管理获取该第一应用的package info,PMS可以生成第一应用的组件信息(generate package info),PMS进一步将第一应用的组件信息处理为有效内容(PackageInfoUtils@generate),有效内容例如包括按照应用组件类型归类后的组件信息,比如组件信息包括activity、service、broadcast和providers,第二进程向第一进程返回组件信息时,可以按照本申请实施例的方式是的单次返回的各组件总数累计小于1000个。使得binder交互中的数据不会过大,改善因binder中数据过大导致binder内存耗尽产生的应用程序异常退出现象。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的方法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对实现控制进程交互的方法的装置进行功能模块的划分,例如可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图5示为本申请实施例提供的一种芯片的结构示意图。芯片500包括一个或两个以上(包括两个)处理器501、通信线路502、通信接口503和存储器504。
在一些实施方式中,存储器504存储了如下的元素:可执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
上述本申请实施例描述的方法可以应用于处理器501中,或者由处理器501实现。处理器501可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器501中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器501可以是通用处理器(例如,微处理器或常规处理器)、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门、晶体管逻辑器件或分立硬件组件,处理器501可以实现或者执行本申请实施例中的公开的各处理相关的方法、步骤及逻辑框图。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。其中,软件模块可以位于随机存储器、只读存储器、可编程只读存储器或带电可擦写可编程存储器(electricallyerasable programmable read only memory,EEPROM)等本领域成熟的存储介质中。该存储介质位于存储器504,处理器501读取存储器504中的信息,结合其硬件完成上述方法的步骤。
处理器501、存储器504以及通信接口503之间可以通过通信线路502进行通信。
在上述实施例中,存储器存储的供处理器执行的指令可以以计算机程序产品的形式实现。其中,计算机程序产品可以是事先写入在存储器中,也可以是以软件形式下载并安装在存储器中。
本申请实施例还提供一种计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。例如,可用介质可以包括磁性介质(例如,软盘、硬盘或磁带)、光介质(例如,数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本申请实施例还提供一种计算机可读存储介质。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
作为一种可能的设计,计算机可读介质可以包括紧凑型光盘只读储存器(compactdisc read-only memory,CD-ROM)、RAM、ROM、EEPROM或其它光盘存储器;计算机可读介质可以包括磁盘存储器或其它磁盘存储设备。而且,任何连接线也可以被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,DSL或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘(CD),激光盘,光盘,数字通用光盘(digital versatile disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。
本申请实施例是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
Claims (6)
1.一种控制进程交互的方法,其特征在于,应用于运行有第一进程和第二进程的终端设备,所述第一进程和所述第二进程基于binder机制通信,所述方法包括:
确定所述第一进程向所述第二进程调取目标信息;所述目标信息为所述第二进程对应的应用的应用组件信息;
向所述第一进程传输所述目标信息中的第一数据;其中,所述第一数据包括所述目标信息中的第一部分信息,所述第一数据的大小不超过预设值;所述第一部分信息为:按照所述目标信息中的activity、service、broadcast、providers按照重要程度排序后选取的部分数据;
确定所述第一进程向所述第二进程调取目标信息之前,还包括:
所述第一进程基于第一接口和getPackageInfoComponentCount获取所述第二进程中所述目标信息对应的应用组件个数;所述第一接口用于支持获取应用组件的个数;
当所述应用组件个数大于个数阈值时,所述第一进程根据所述应用组件个数确定向所述第二进程发送调用所述目标信息的指令的次数;
其中,所述第一进程每向所述第二进程发送一次调用所述目标信息的指令,所述第二进程向所述第一进程返回一次数据,任一次返回的数据的大小不超过所述预设值;
向所述第一进程传输所述目标信息中的第一数据之后,还包括:
所述第一进程向所述第二进程发送调用所述目标信息的指令;
所述第二进程向所述第一进程传输所述目标信息中的第二数据,所述第二数据包括所述目标信息中的第二部分信息,所述第二数据的大小不超过所述预设值。
2.一种控制进程交互的方法,其特征在于,应用于运行有第一进程和第二进程的终端设备,所述第一进程和所述第二进程基于binder机制通信,所述方法包括:
确定所述第一进程向所述第二进程调取目标信息;所述目标信息为所述第二进程对应的应用的应用组件信息;
向所述第一进程传输所述目标信息中的第一数据;其中,所述第一数据包括所述目标信息中的第一部分信息,所述第一数据的大小不超过预设值;所述第一数据中携带有第一值,所述第一值为所述第二进程将向所述第一进程传输的数据的总批次;所述第一部分信息为:按照所述目标信息中的activity、service、broadcast、providers按照重要程度排序后选取的部分数据;
所述向所述第一进程传输所述目标信息中的第一数据之后,还包括:
向所述第一进程传输所述目标信息中的第N数据,直到所述第二进程将所述目标信息中的组件信息分批次传输完成;其中,所述第N数据包括所述目标信息中的部分信息,所述第N数据的大小不超过所述预设值;各批次中所述目标信息对应的应用组件是基于第二接口以及getPackageInfoComponents获取的;所述第二接口用于按照索引分批获取组件信息。
3.根据权利要求2所述的方法,其特征在于,所述第一数据和/或所述第N数据还携带有第二值,所述第二值为所述第一数据或所述第N数据在所述总批次中的具体批次值。
4.一种终端设备,其特征在于,包括:存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,以执行如权利要求1-3任一项所述的控制进程交互的方法。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如权利要求1-3任一项所述的控制进程交互的方法。
6.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被运行时,使得电子设备执行如权利要求1-3任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210764724.8A CN115202902B (zh) | 2022-07-01 | 2022-07-01 | 控制进程交互的方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210764724.8A CN115202902B (zh) | 2022-07-01 | 2022-07-01 | 控制进程交互的方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115202902A CN115202902A (zh) | 2022-10-18 |
CN115202902B true CN115202902B (zh) | 2023-08-22 |
Family
ID=83578984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210764724.8A Active CN115202902B (zh) | 2022-07-01 | 2022-07-01 | 控制进程交互的方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115202902B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335238A (zh) * | 2014-08-12 | 2016-02-17 | 腾讯科技(深圳)有限公司 | 进程间通信方法及装置 |
CN109684069A (zh) * | 2017-10-13 | 2019-04-26 | 华为技术有限公司 | 资源管理的方法及终端设备 |
WO2021083378A1 (zh) * | 2019-11-01 | 2021-05-06 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
WO2021208627A1 (zh) * | 2020-04-13 | 2021-10-21 | 荣耀终端有限公司 | 一种任务调度方法、装置及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11693701B2 (en) * | 2017-09-30 | 2023-07-04 | Huawei Technologies Co., Ltd. | System service timeout processing method, and apparatus |
CN109669784B (zh) * | 2017-10-13 | 2021-06-22 | 华为技术有限公司 | 一种进程间通信的方法及*** |
CN109032812B (zh) * | 2018-06-29 | 2020-10-02 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN108984321B (zh) * | 2018-06-29 | 2021-03-19 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
-
2022
- 2022-07-01 CN CN202210764724.8A patent/CN115202902B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335238A (zh) * | 2014-08-12 | 2016-02-17 | 腾讯科技(深圳)有限公司 | 进程间通信方法及装置 |
CN109684069A (zh) * | 2017-10-13 | 2019-04-26 | 华为技术有限公司 | 资源管理的方法及终端设备 |
WO2021083378A1 (zh) * | 2019-11-01 | 2021-05-06 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
WO2021208627A1 (zh) * | 2020-04-13 | 2021-10-21 | 荣耀终端有限公司 | 一种任务调度方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115202902A (zh) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4002108A1 (en) | Application start method and electronic device | |
CN110809255B (zh) | 一种卡信息激活方法、装置及存储介质 | |
KR101754680B1 (ko) | 휴대용 통신 디바이스상에서 운영 체제를 복구하는 방법, 장치 및 시스템 | |
CN115499897B (zh) | WiFi网络接入方法及相关装置 | |
CN109656844A (zh) | 一种AT24xx EEPROM驱动方法和装置 | |
CN115202902B (zh) | 控制进程交互的方法及相关装置 | |
CN111580883B (zh) | 应用程序启动方法、装置、计算机***和介质 | |
CN117707439A (zh) | 日志打印方法及相关装置 | |
CN113050985A (zh) | 前端工程依赖自动注册方法及装置 | |
CN112506676A (zh) | 进程间的数据传输方法、计算机设备和存储介质 | |
CN116089110B (zh) | 控制进程交互的方法及相关装置 | |
CN113591006A (zh) | 一种基于WebSocket的Web扩展方法和装置 | |
CN114238074A (zh) | 一种子应用的调试方法、装置、设备及存储介质 | |
CN116737258B (zh) | 卸载应用的方法及相关装置 | |
CN116088888B (zh) | 应用程序更新方法及相关装置 | |
CN117858279A (zh) | 一种sim卡业务处理的方法及相关装置 | |
CN116700660B (zh) | 音频播放方法和电子设备 | |
CN117827043A (zh) | 一种内容接续方法及相关装置 | |
CN115397033B (zh) | 无线通信方法、装置、无线通信模组、介质及程序产品 | |
CN116700738B (zh) | 应用管理方法、电子设备及*** | |
CN117714271A (zh) | 消息处理方法及相关装置 | |
CN117834649B (zh) | 数据传输方法及相关装置 | |
CN116737037B (zh) | 界面显示中的栈管理方法及相关装置 | |
CN116662270B (zh) | 文件解析方法及相关装置 | |
CN110865796B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |