CN110023907B - 一种处理方法及装置 - Google Patents

一种处理方法及装置 Download PDF

Info

Publication number
CN110023907B
CN110023907B CN201780074368.4A CN201780074368A CN110023907B CN 110023907 B CN110023907 B CN 110023907B CN 201780074368 A CN201780074368 A CN 201780074368A CN 110023907 B CN110023907 B CN 110023907B
Authority
CN
China
Prior art keywords
application
threads
binder
system service
interface
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
Application number
CN201780074368.4A
Other languages
English (en)
Other versions
CN110023907A (zh
Inventor
蔺振超
丁超
刘磊
许顺
刘博�
邓勐
卢守栋
赵伟
陆建海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN110023907A publication Critical patent/CN110023907A/zh
Application granted granted Critical
Publication of CN110023907B publication Critical patent/CN110023907B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Telephone Function (AREA)
  • Telephonic Communication Services (AREA)

Abstract

一种处理方法及装置,用于Binder通信的过程中,解决了Binder线程耗尽,影响安卓***的正常通信服务的问题。该处理方法包括:当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,确定***服务进程中各个接口中应用进程占用的Binder线程的数量(S301),应用进程的一个应用线程对应***服务进程中的一个Binder线程;保持***服务进程中至少一个接口中应用进程占用的Binder线程的数量不大于第二阈值(S302)。

Description

一种处理方法及装置
本申请要求于2017年10月09日提交国家知识产权局、申请号为CN201710931292.4、申请名称为“一种动态检测并修复IPC的方法和设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请实施例涉及终端领域,尤其涉及一种处理方法及装置。
背景技术
Binder是安卓(Android)***的进程间通信(Inter-Process Communication,IPC)方式之一。例如,安卓***的框架层(Framework Layer)和应用层(ApplicationLayer)之间使用Binder方式进行通信。图1为本申请实施例提供的一种Binder通信示意图。应用进程与***服务进程之间进行Binder通信,其中,应用1进程启动了3个应用线程,应用2进程启动了1个应用线程,一个应用线程与***服务进程中的一个Binder线程进行Binder通信。
通常,Binder只适用于轻量级的进程间通信,默认一个进程最多有16个Binder线程,Binder通信会在很短的时间内完成。但是,部分应用进程在短时间内可能会启动大量应用线程与***服务进程中的Binder线程进行通信。由于Binder线程作为Binder通信方式的资源也是有限的,例如,框架层的***服务(System Server)进程最多有32个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线程的数量不大于第二阈值,包括:当第一应用进程占用***服务进程的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线程的数量不大于第二阈值,第二阈值小于***服务进程包括的所有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线程的数量不大于第二阈值,其中,第二阈值小于***服务进程包括的所有Binder线程,第一应用进程为在第一接口中占用Binder线程的数量最多的应用进程。
需要说明的是,上述第五方面至第七方面功能模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。例如,处理器,用于完成处理单元的功能,存储器,用于处理器处理本申请实施例的测量上报方法的程序指令。处理器和存储器通过总线连接并完成相互间的通信。具体的,可以参考第一方面至第四方面提供的处理方法中移动设备的行为的功能。
本申请实施例的第八方面,提供一种移动设备,包括:至少一个处理器、存储器、通信接口、通信总线;至少一个处理器与存储器、通信接口通过通信总线连接,存储器用于存储计算机执行指令,当处理器运行时,处理器执行存储器存储的计算机执行指令,以使该移动设备执行如上述任意方面的方法。
本申请实施例的第九方面,提供一种计算机存储介质,用于存储上述移动设备所用的计算机软件指令,该计算机软件指令包含用于执行上述处理方法所设计的程序。
本申请实施例的第十方面,提供了一种包含指令的计算机程序产品,当其在移动设备上运行时,使得移动设备可以执行上述任意方面的方法。
另外,第五方面至第十方面中任一种设计方式所带来的技术效果可参见第一方面至第四方面中不同设计方式所带来的技术效果,此处不再赘述。
本申请实施例中,移动设备的名字对设备本身不构成限定,在实际实现中,这些设备可以以其他名称出现。只要各个设备的功能和本申请实施例类似,属于本申请权利要求及其等同技术的范围之内。
本申请实施例的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
图1为本申请实施例提供的一种Binder通信示意图;
图2为本申请实施例提供的一种移动设备的结构简化示意图;
图3为本申请实施例提供的一种处理方法的流程图;
图4为本申请实施例提供的另一种处理方法的流程图;
图5为本申请实施例提供的一种处理方法的示意图;
图6为本申请实施例提供的一种Binder线程资源池对比示意图;
图7为本申请实施例提供的又一种处理方法的流程图;
图8为本申请实施例提供的再一种处理方法的流程图;
图9为本申请实施例提供的另一种处理方法的示意图;
图10为本申请实施例提供的再一种处理方法的流程图;
图11为本申请实施例提供的再一种处理方法的流程图;
图12为本申请实施例提供的一种移动设备的结构示意图;
图13为本申请实施例提供的另一种移动设备的结构示意图。
具体实施方式
应用指的是用户在移动设备(例如,手机)上安装的APP,包括常用的第三方应用微信、QQ,也包括移动设备在出厂时自带的短信、联系人等。
进程是指一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有***资源,是一个动态的概念,是一个活动的实体,应用运行的载体。一个应用至少包含一个进程。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
线程有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程标识、当前指令指针、寄存器集合和堆栈组成。线程是指进程的子单位,一个进程可以包括多个线程。每个线程的处理方式是线性的。如果想同时处理多个任务,则需要多线程并发处理。
Binder是安卓***的进程间通信方式之一,其本身也是个线程。Binder通信指应用进程的应用线程与***服务进程的Binder线程间的通信,例如应用A调用***服务的接口,则A应用端调用该接口的线程A,在***服务端会有一个对应的Binder线程B。应用A与应用B之间进行通信。例如,在同一时刻,Binder线程资源池可以提供最多32个Binder线程可用,该32个Binder线程可供不同应用使用。应用每启动一个线程,调用***服务,就要占用一个Binder线程。***服务进程中的Binder线程的数量,包括:***服务进程中全部接口的Binder线程的数量;或者,***服务进程中至少一个接口的Binder线程的数量;***服务进程中一个接口的Binder线程的数量。
但是,部分应用进程在短时间内可能会启动大量应用线程与***服务进程中的Binder线程进行通信。例如,用户使用第三方应用下载(例如QQDownload),应用为达到最大下载处理能力,使用了多线程并发的方式。线程调用耗时的接口访问***服务,如果应用启动线程的速度大于接口处理的速度。会导致***服务不断的分配Binder线程给QQDownload,导致Binder线程被这一个应用占满,这样不仅没有加快下载处理速度,而且其他应用也无法抢到Binder线程,无法继续处理业务,反而导致整机卡顿甚至重启。
在另一种场景中,用户使用手机过程中,启动应用A,应用A的多个线程调用PackageManagerService模块,本身应用A启动线程的速度不快,并不会导致堵塞。但是,由于***服务在后台发生卡顿(例如包管理服务(PackageManagerService)模块),处理速度的慢,导致Binder线程占用越来越多,导致整机卡顿甚至重启。例如,用户打开音乐,想播放一个音乐,但是由于PackageManagerService模块卡顿,全卡在访问PackageManagerService模块了,无法分配一个Binder线程给音乐播放使用。后台服务卡顿用户可能无感知,如果Binder线程被耗尽就会导致用户感知到移动设备卡死。
为了解决Binder线程耗尽,影响安卓***的正常通信服务的问题,本申请实施例提供一种处理方法,其基本原理是:当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,确定***服务进程中各个接口中应用进程占用的Binder线程的数量,保持***服务进程中至少一个接口中应用进程占用的Binder线程的数量不大于第二阈值,其中,应用进程的一个应用线程对应***服务进程中的一个Binder线程,第二阈值小于***服务进程包括的所有Binder线程。本申请实施例提供的处理方法,通过管控应用进程的应用线程,减少应用进程占用***服务进程的Binder线程的数量,从而,避免单个应用进程耗尽Binder线程资源池中的Binder线程,导致的安卓***卡死,甚至导致的整个安卓***的虚拟机崩溃重启,影响安卓***的正常通信服务的问题。
下面将结合附图对本申请实施例的实施方式进行详细描述。
在本申请实施例中以移动设备为手机为例进行说明。下面结合附图对手机的各个构成部件进行具体的介绍:
如图2所示,手机可以包括:显示单元20、输入单元21、处理器22、存储器23、电源24、射频(Radio Frequency,RF)电路25、重力传感器26、音频电路27、扬声器28、麦克风29等部件,这些部件之间可以以总线连接,也可以直连连接。本领域技术人员可以理解的,图2中示出的手机结构并不构成对手机的限定,可以包括比图示更多的部件,或者组合某些部件,或者不同的部件布置。
其中,显示单元20可操作的连接到处理器22,用于接收处理器22返回的处理结果并进行显示。例如,可用于显示通过摄像头采集到的图像,以及手机的各种菜单。在显示单元20上通常配置有图形用户接口(Graphical User Interface,GUI),GUI用于在用户和手机上运行的操作***之间提供易于使用的接口。
输入单元21可以是单点或多点的输入单元,其可操作的连接到处理器22,用于接收用户的输入操作。输入单元21可以是放置在显示单元20之上或之前的触摸板或触摸屏,该触摸板或触摸屏可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触摸屏上或在触摸屏附近的操作),并根据预先设定的程式驱动相应的连接装置。例如,可以基于电容感应、电阻感应、表面声波感应、压力感应、光感应等感应技术来实现触摸板或触摸屏。且触摸板或触摸屏可以与显示单元20集成在一起或者也可以是单独的部件。
处理器22是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器23内的软件程序和/或模块,以及调用存储在存储器23内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。在具体实现中,作为一种实施例,处理器22可包括一个或多个处理单元;处理器22可集成应用处理器和调制解调处理器。其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器22中。
在本申请实施例中,处理器22主要用于当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,确定***服务进程中各个接口中应用进程占用的Binder线程的数量,保持***服务进程中至少一个接口中应用进程占用的Binder线程的数量不大于第二阈值,其中,应用进程的一个应用线程对应***服务进程中的一个Binder线程,第二阈值小于***服务进程包括的所有Binder线程。
存储器23可用于存储数据、软件程序以及模块,可以是易失性存储器(VolatileMemory),例如随机存取存储器(Random-Access Memory,RAM);或者非易失性存储器(Non-Volatile Memory),例如只读存储器(Read-Only Memory,ROM),快闪存储器(FlashMemory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,或者也可以是可移动存储介质,例如安全数字(Secure Digital,SD)存储卡。具体的,存储器23内可存储程序代码,该程序代码用于使处理器22通过执行该程序代码,执行本申请实施例提供的处理方法。
电源24,可以为电池,通过电源管理***与处理器22逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。
RF电路25可用于收发信息或通话过程中,信号的接收和发送,特别地,将接收到的信息给处理器22处理;另外,将处理器22生成的信号发送出去。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,LNA)、双工器等。此外,RF电路25还可以通过无线通信与网络和其他设备通信。
重力传感器(Gravity Sensor)26,可以检测手机在各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等。需要说明的是,手机还可以包括其它传感器,比如压力传感器、光传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路27、扬声器28、麦克风29可提供用户与手机之间的音频接口。音频电路27可将接收到的音频数据转换后的电信号,传输到扬声器28,由扬声器28转换为声音信号输出;另一方面,麦克风29将收集的声音信号转换为电信号,由音频电路27接收后转换为音频数据,再将音频数据输出至RF电路25以发送给比如另一手机,或者将音频数据输出至处理器22以便进一步处理。
另外,在上述部件之上,运行有操作***。在该操作***上可以安装运行应用程序。且,尽管未示出,手机还可以包括Wi-Fi模块、蓝牙模块、摄像头等部件。其中,Wi-Fi模块,可以是包括Wi-Fi芯片和Wi-Fi芯片的驱动程序的模块,Wi-Fi芯片具备运行无线互联网标准协议的能力。蓝牙模块,是一种集成蓝牙功能的印刷电路板组件(Printed CircuitBoard Assembly,PCBA),用于短距离无线通讯。
以下结合附图对本申请实施例提供的处理方法进行具体介绍。
图3为本申请实施例提供的一种处理方法的流程图,如图3所示,该方法可以包括:
S301、当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,确定***服务进程中各个接口中应用进程占用的Binder线程的数量。
在用户使用在安卓***中安装的应用的时候,会经常有这样的一种情形:在一个应用中触发了某种条件会打开另一个应用。例如,在手机的QQ应用中给好友发送文件,就会打开***自带的文件管理器应用,给好友发送照片就会打开***自带的相册应用或者相机应用,在上述情况下,QQ应用的应用进程需要访问***服务进程,应用进程的应用线程与***服务进程的Binder线程需要进行Binder通信。
需要说明的是,一个应用可以有多个应用进程。一个应用进程可以访问***服务进程中不同的接口。***服务进程包括n个Binder线程,n个Binder线程可以属于不同的接口,则应用进程占用的***服务进程中的Binder线程可以属于不同的接口。因此,当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,需要确定***服务进程中各个接口(每个接口)中该应用进程占用的Binder线程的数量,确认哪个接口中该应用进程占用的Binder线程的数量最多。第一阈值可以根据经验预先设定。例如,默认一个应用进程最多有16个Binder线程,第一阈值可以设置为8。应用进程的一个应用线程对应***服务进程中的一个Binder线程。不同的应用线程与Binder线程间的Binder通信可以执行不同的任务,当然,不同的应用线程与Binder线程间的Binder通信可以执行相同的任务。
另外,对于监控应用进程的应用线程的数量,本申请实施例提供一种可以实现的方式。在移动设备启动应用进程的应用线程之后,更新启动应用线程值M,M的初始值为0,启动一个应用线程,M加一。移动设备处理完一个应用线程与一个Binder线程间的Binder通信后,M减一。移动设备判断M是否大于或等于第一阈值,若M大于或等于第一阈值,确定***服务进程中各个接口中该应用进程占用的Binder线程的数量,当然,应用进程可以继续启动应用线程。若M小于第一阈值,应用进程可以继续启动应用线程,移动设备处理应用进程的应用线程与***服务进程的Binder线程间的Binder通信。
本申请实施例所述的处理方法,在一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,对确定***服务进程中各个接口中应用进程占用的Binder线程的数量,是对监控应用进程占用的Binder线程的数量增加条件,从而,避免一直在监控带来的性能损耗。
当然,也存在一种可实现方式,在移动设备启动应用进程的应用线程之后,直接对***服务进程中各个接口中该应用进程占用的Binder线程的数量进行监控,无需等到应用进程的应用线程数量大于或等于第一阈值时,再对***服务进程中各个接口中该应用进程占用的Binder线程的数量进行监控。
S302、保持***服务进程中至少一个接口中应用进程占用的Binder线程的数量不大于第二阈值。
可以理解的,***服务进程中的每个接口应用进程占用的Binder线程的数量不一定都大于或等于第二阈值,即有的接口应用进程占用的Binder线程的数量大于或等于第二阈值,有的接口应用进程占用的Binder线程的数量小于第二阈值。第二阈值小于***服务进程包括的所有Binder线程。
当***服务进程中至少一个接口中应用进程占用的Binder线程的数量大于或等于第二阈值时,将应用进程中相应于至少一个接口新增的应用线程保持等待状态。可以理解的,应用进程可以占用***服务进程中多个接口,只要应用进程占用***服务进程中一个接口的Binder线程的数量大于或等于第二阈值,将应用进程中新增的应用线程保持等待状态。例如,应用进程占用了***服务进程中三个接口,应用进程占用第一个接口的13个Binder线程,应用进程占用第二个接口的1个Binder线程,应用进程占用第三个接口的2个Binder线程,此时,应用进程占用第一个接口的Binder线程较多,达到了第二阈值,则将应用进程中新增的应用线程保持等待状态。
可选的,也可以不用考虑***服务进程中的接口,当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,确定该应用进程占用***服务进程的Binder线程的数量,若确定该应用进程占用***服务进程的Binder线程的数量大于或等于第二阈值,则将应用进程中新增的应用线程保持等待状态。
另外,保持***服务进程中至少一个接口中应用进程占用的Binder线程的数量不大于第二阈值还可以理解为,当***服务进程中至少一个接口中应用进程占用的Binder线程的数量小于第二阈值时,应用线程与Binder线程之间进行Binder通信,无需对应用进程中新增的应用线程进行管控。
进一步的,如图4所示,在当***服务进程中至少一个接口中应用进程占用的Binder线程的数量大于或等于第二阈值时,将应用进程中相应于至少一个接口新增的应用线程保持等待状态之后,还可以包括以下步骤:
S303、待***服务进程中至少一个接口中应用进程占用的Binder线程的数量小于第二阈值时,将处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。
对应新增的应用线程可以按照进入等待状态的顺序来进行处理。例如,按照先入先出,即在***服务进程中至少一个接口中应用进程占用的Binder线程的数量小于第二阈值时,对于先进入等待状态的新增的应用线程先分配相应的Binder线程,然后,对再进入等待状态的新增的应用线程分配相应的Binder线程。例如,依次新增的应用线程为应用线程1、应用线程2和应用线程3,首先,对应用线程1分配相应的Binder线程,再对应用线程2分配相应的Binder线程,最后,对应用线程3分配相应的Binder线程。或者,按照后入先出,即在***服务进程中至少一个接口中应用进程占用的Binder线程的数量小于第二阈值时,对于最后进入等待状态的新增的应用线程先分配相应的Binder线程。例如,依次新增的应用线程为应用线程1、应用线程2和应用线程3,首先,对应用线程3分配相应的Binder线程,再对应用线程2分配相应的Binder线程,最后,对应用线程1分配相应的Binder线程。
图5为本申请实施例提供一种处理方法的示意图。***服务进程的Binder线程资源池包括n个Binder线程,n个Binder线程可以属于不同的接口(图中未示出)。通常,在同一时刻,可以使用Binder线程资源池的32个Binder线程(资源),假设第一阈值为8,第二阈值为16。示例的,应用进程启动20线程与***服务进程进行Binder通信。图5中的(a)表示应用1进程启动了6个应用线程,此时,应用1进程的应用线程数量小于第一阈值8的,无需确定***服务进程中各个接口中应用1进程占用的Binder线程的数量,应用1进程可以继续启动应用线程与Binder线程进行Binder通信;图5中的(b)表示应用1进程启动到第8个应用线程时,检测到应用1进程的应用线程数量等于第一阈值8,此时,确定***服务进程中各个接口中应用1进程占用的Binder线程的数量,应用1进程仍然可以继续启动应用线程与Binder线程进行Binder通信;图5中的(c)表示应用1进程启动第16个应用线程与Binder线程进行Binder通信后,确定***服务进程中应用1进程占用的Binder线程的数量达到了第二阈值16,当然,应用1进程占用的16个Binder线程可以属于同一个接口,也可以属于不同的接口,例如,如果应用1进程占用了两个接口,一个接口占用了15个Binder线程,一个接口占用了1个Binder线程;图5中的(d)表示将应用1进程启动的第17个应用线程至第20个应用线程保持等待状态;图5中的(e)表示应用1进程的第16个应用线程占用的第16个Binder线程间的Binder通信完成后,***服务进程中至少一个接口中应用1进程占用的Binder线程的数量小于第二阈值16,等待状态的应用1进程的第17个应用线程可以分配相应的Binder线程,例如,将第16个Binder线程分配给应用1进程的第17个应用线程。保障移动设备同时处理的应用线程与Binder线程间的Binder通信不大于16个。
图6为本申请实施例提供的一种Binder线程资源池对比示意图。图6中的(a)所示为在同一时刻,Binder线程资源池的32个Binder线程(资源)被单个应用进程的应用线程异常占满的情况。图6中的(b)所示为根据本申请实施例所述的处理方法,在同一时刻,单个应用进程的应用线程只占用了Binder线程资源池中的B个Binder线程,32-B个Binder线程依然可用,B小于等于第二阈值。
本申请实施例提供的处理方法,通过管控应用进程的应用线程,减少应用进程占用***服务进程的Binder线程的数量,从而,避免单个应用进程耗尽Binder线程资源池中的Binder线程,导致的安卓***卡死,甚至导致的整个安卓***的虚拟机崩溃重启,影响安卓***的正常通信服务的问题。
图7为本申请实施例提供的一种处理方法的流程图,如图7所示,该方法可以包括:
S701、当***服务进程中的Binder线程的数量大于或等于第一阈值时,确定第一应用进程。
***服务进程中的Binder线程可以由多个应用进程占用,当***服务进程中的Binder线程的数量大于或等于第一阈值,就在占用***服务进程中的Binder线程的多个应用进程中查找占用***服务进程的Binder线程的数量最多的应用进程,确定第一应用进程为占用***服务进程的Binder线程的数量最多的应用进程。第一阈值小于***服务进程包括的所有Binder线程。
可选的,S701的替代方案包括:当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,确定第一应用进程。
S702、保持第一应用进程占用***服务进程的Binder线程的数量不大于第二阈值。
当第一应用进程占用***服务进程的Binder线程的数量大于或等于第二阈值时,将第一应用进程中新增的应用线程保持等待状态。第二阈值小于***服务进程包括的所有Binder线程。
另外,当***服务进程中的Binder线程的数量大于或等于第一阈值时,确定第一应用进程后,可以直接对第一应用进程中新增的应用线程进行管控,无需当第一应用进程占用***服务进程的Binder线程的数量大于或等于第二阈值时,再对第一应用进程中新增的应用线程进行管控。
保持第一应用进程占用***服务进程的Binder线程的数量不大于第二阈值可以理解的,当第一应用进程占用***服务进程的Binder线程的数量小于第二阈值时,应用线程与Binder线程之间进行Binder通信,无需对第一应用进程中新增的应用线程进行管控。
进一步的,如图8所示,在当第一应用进程占用***服务进程的Binder线程的数量大于或等于第二阈值时,将第一应用进程中新增的应用线程保持等待状态之后,还可以包括以下步骤:
S703、待第一应用进程占用***服务进程的Binder线程的数量小于第二阈值时,将第一应用进程中处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。
对应新增的应用线程可以按照进入等待状态的顺序来进行处理。例如,按照先入先出,即在第一应用进程占用***服务进程的Binder线程的数量小于第二阈值时,对于先进入等待状态的新增的应用线程先分配相应的Binder线程,然后,对再进入等待状态的新增的应用线程分配相应的Binder线程。例如,依次新增的应用线程为应用线程1、应用线程2和应用线程3,首先,对应用线程1分配相应的Binder线程,再对应用线程2分配相应的Binder线程,最后,对应用线程3分配相应的Binder线程。或者,按照后入先出,即在第一应用进程占用***服务进程的Binder线程的数量小于第二阈值时,对于最后进入等待状态的新增的应用线程先分配相应的Binder线程。例如,依次新增的应用线程为应用线程1、应用线程2和应用线程3,首先,对应用线程3分配相应的Binder线程,再对应用线程2分配相应的Binder线程,最后,对应用线程1分配相应的Binder线程。
图9为本申请实施例提供一种处理方法的示意图。***服务进程的Binder线程资源池包括n个Binder线程,n个Binder线程可以属于不同的接口(图中未示出)。通常,在同一时刻,可以使用Binder线程资源池的32个Binder线程(资源),假设第一阈值为16,第二阈值为15。示例的,图9中的(a)表示应用1进程启动了6个应用线程,应用2进程启动了1个应用线程,此时,***服务进程中的Binder线程的数量总共为7小于第一阈值16,无需对***服务进程中应用进程占用的Binder线程的应用进程进行管控,应用1进程可以继续启动应用线程与Binder线程进行Binder通信,应用2进程可以继续启动应用线程与Binder线程进行Binder通信;图9中的(b)表示应用1进程继续启动了2个应用线程,此时,检测到***服务进程中的Binder线程的数量为9,小于第一阈值16,此时,应用1进程仍然可以继续启动应用线程与Binder线程进行Binder通信,应用2进程仍然可以继续启动应用线程与Binder线程进行Binder通信;图9中的(c)表示应用1进程继续启动了6个应用线程,此时,检测到***服务进程中的Binder线程的数量为16,等于第一阈值16,此时,确定应用1进程为占用***服务进程的Binder线程的数量最多的应用进程,占用了15个***服务进程的Binder线程,对应用1进程进行管控;图9中的(d)表示将应用1进程启动第16个应用线程保持等待状态;图9中的(e)表示应用1进程的第15个应用线程占用的第16个Binder线程间的Binder通信完成后,***服务进程中至少一个接口中应用1进程占用的Binder线程的数量小于第二阈值16,等待状态的应用1进程的第16个应用线程可以分配相应的Binder线程,例如,将第16个Binder线程分配给应用1进程的第16个应用线程。保障移动设备同时处理的应用线程与Binder线程间的Binder通信不大于16个。
图10为本申请实施例提供的一种处理方法的流程图,如图10所示,该方法可以包括:
S1001、当***服务进程中的Binder线程的数量大于或等于第一阈值时,确定第一接口。
***服务进程包括多个接口,***服务进程中的Binder线程可以由多个应用进程占用,当***服务进程中的Binder线程的数量大于或等于第一阈值,就在***服务进程包括的多个接口中查找占用的Binder线程的数量最多的接口,确定第一接口为占用***服务进程的Binder线程的数量最多的接口。
可选的,S701的替代方案包括:当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,确定第一接口。
S1002、保持第一接口中第一应用进程占用***服务进程的Binder线程的数量不大于第二阈值。
第一接口也有多个应用进行占用,在第一接口中查找,占用Binder线程的数量最多的应用进程,确定第一应用进程为在第一接口中占用Binder线程的数量最多的应用进程。
当第一接口中第一应用进程占用***服务进程的Binder线程的数量大于或等于第二阈值时,将第一应用进程中新增的应用线程保持等待状态。第二阈值小于***服务进程包括的所有Binder线程。
另外,当***服务进程中的Binder线程的数量大于或等于第一阈值时,确定第一应用进程后,可以直接对第一应用进程中新增的应用线程进行管控,无需当第一应用进程占用***服务进程的Binder线程的数量大于或等于第二阈值时,再对第一应用进程中新增的应用线程进行管控。
保持第一接口中第一应用进程占用***服务进程的Binder线程的数量不大于第二阈值还可以理解为,当第一接口中第一应用进程占用***服务进程的Binder线程的数量小于第二阈值时,应用线程与Binder线程之间进行Binder通信,无需对占用第一接口的Binder线程应用进程中新增的应用线程进行管控。
进一步的,如图11所示,在当第一接口中第一应用进程占用***服务进程的Binder线程的数量大于或等于第二阈值时,将第一应用进程中新增的应用线程保持等待状态之后,还可以包括以下步骤:
S1003、待第一应用进程占用***服务进程的Binder线程的数量小于第二阈值时,将第一应用进程中处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。
对应新增的应用线程可以按照进入等待状态的顺序来进行处理。例如,按照先入先出,即在第一应用进程占用***服务进程的Binder线程的数量小于第二阈值时,对于先进入等待状态的新增的应用线程先分配相应的Binder线程,然后,对再进入等待状态的新增的应用线程分配相应的Binder线程。例如,依次新增的应用线程为应用线程1、应用线程2和应用线程3,首先,对应用线程1分配相应的Binder线程,再对应用线程2分配相应的Binder线程,最后,对应用线程3分配相应的Binder线程。或者,按照后入先出,即在第一应用进程占用***服务进程的Binder线程的数量小于第二阈值时,对于最后进入等待状态的新增的应用线程先分配相应的Binder线程。例如,依次新增的应用线程为应用线程1、应用线程2和应用线程3,首先,对应用线程3分配相应的Binder线程,再对应用线程2分配相应的Binder线程,最后,对应用线程1分配相应的Binder线程。
示例的,可以参考图9所示的动态示意图,图9中的(c)表示应用1进程继续启动了6个应用线程,此时,检测到***服务进程中的Binder线程的数量为16,等于第一阈值16,此时,检测到Binder线程1至Binder线程16均属于第一接口,而占用第一接口中Binder线程的数量最多的应用进程是应用1进程,确定应用1进程为占用***服务进程的Binder线程的数量最多的应用进程,对应用1进程进行管控。其他详细阐述可以参考图9的解释,本申请实施例在此不再赘述。
由于应用进程与***服务进程之间进行Binder通信,其中,应用进程的应用线程与***服务进程的Binder线程是一对一的关系,即一个应用线程与一个Binder线程进行Binder通信。当应用进程启动第i应用线程时,第1应用线程至第i-1应用线程可能正在与i-1个Binder线程进行Binder通信,因此,也可以从应用进程的单方面对应用进程的应用线程进行管控,避免单个应用进程耗尽Binder线程资源池中的Binder线程。
本申请实施例提供一种处理方法,应用于安装有多个应用的移动设备,包括:当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,保持应用进程占用***服务进程的Binder线程的数量不大于第二阈值。
在一种可能的实现方式:保持应用进程占用***服务进程的Binder线程的数量不大于第二阈值包括:当应用进程占用***服务进程的Binder线程的数量大于或等于第二阈值时,将应用进程中新增的应用线程保持等待状态。
在另一种可能的实现方式中,保持应用进程占用***服务进程的Binder线程的数量不大于第二阈值,包括:当应用进程占用***服务进程的Binder线程的数量大于或等于第二阈值时,将应用进程中新增的应用线程保持等待状态,待应用进程占用***服务进程的Binder线程的数量小于第二阈值时,将处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。通过及时地处理等待状态的应用线程,来提高移动设备的处理性能。
在另一种可能的实现方式中,保持应用进程占用***服务进程的Binder线程的数量不大于第二阈值,包括:当应用进程启动的应用线程的数量大于或等于第二阈值时,将应用进程中新增的应用线程保持等待状态。
在另一种可能的实现方式中,保持应用进程占用***服务进程的Binder线程的数量不大于第二阈值,包括:当应用进程启动的应用线程的数量大于或等于第二阈值时,将应用进程中新增的应用线程保持等待状态,待应用进程占用***服务进程的Binder线程的数量小于第二阈值时,将处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。通过及时地处理等待状态的应用线程,来提高移动设备的处理性能。
在另一种可能的实现方式中,在保持应用进程占用***服务进程的Binder线程的数量不大于第二阈值,之前,还包括:确定应用进程启动的应用线程的数量。通过对应用进程启动的应用线程进行两次判断,可以有效地提高管控应用线程的可靠性。
另外,可以通过命令(adb shell kill-3dump systemserver)的Binder状态,就可以知道是否对Binder线程进行限制。除了线程,升级版Binder(hwbinder)、文件描述符(file descriptor,fd)、套接字(socket)都可以采取本申请实施例所述的处理方法。
上述主要从各个网元之间交互的角度对本申请实施例提供的方案进行了介绍。可以理解的是,各个网元,例如移动设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对移动设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图12示出了上述和实施例中涉及的移动设备的一种可能的组成示意图,如图12所示,该移动设备可以包括:确定单元1201和处理单元1202。
其中,确定单元1201,用于支持移动设备执行图3所示的处理方法中的S301,图4所示的处理方法中的S301,图7所示的处理方法中的S701,图8所示的处理方法中的S701,图10所示的处理方法中的S1001,图11所示的处理方法中的S1001。
处理单元1202,用于支持移动设备执行图3所示的处理方法中的S302,图4所示的处理方法中的S302、S303,图7所示的处理方法中的S702,图8所示的处理方法中的S702、S703,图10所示的处理方法中的S1002,图11所示的处理方法中的S1002、S1003。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本申请实施例提供的移动设备,用于执行上述处理方法,因此可以达到与上述处理方法相同的效果。
在采用集成的单元的情况下,图13示出了上述实施例中所涉及的移动设备的另一种可能的组成示意图。如图13所示,该移动设备包括:处理模块1301和通信模块1302。
处理模块1301用于对移动设备的动作进行控制管理,例如,处理模块1301用于支持移动设备执行图3中的S302,图4中的S302、S303,图7中的S702,图8中的S702、S703,图10中的S1002,图11中的S1002、S1003,和/或用于本文所描述的技术的其它过程。通信模块1302用于支持移动设备与其他网络实体的通信。移动设备还可以包括存储模块1303,用于存储移动设备的程序代码和数据。
其中,处理模块1301可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块1302可以是收发器、收发电路或通信接口等。存储模块1303可以是存储器。
当处理模块1301为处理器,通信模块1302为RF电路,存储模块1303为存储器时,本申请实施例所涉及的移动设备可以为图2所示的移动设备。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (23)

1.一种处理方法,应用于安装有多个应用的移动设备,其特征在于,包括:
当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,确定***服务进程中各个接口中所述应用进程占用的Binder线程的数量,所述应用进程的一个应用线程对应所述***服务进程中的一个Binder线程;
保持所述***服务进程中至少一个接口中所述应用进程占用的Binder线程的数量不大于第二阈值,其中,所述第二阈值小于所述***服务进程包括的所有Binder线程的数量。
2.根据权利要求1所述的方法,其特征在于,所述保持所述***服务进程中至少一个接口中所述应用进程占用的Binder线程的数量不大于第二阈值,包括:
当所述***服务进程中所述至少一个接口中所述应用进程占用的Binder线程的数量大于或等于所述第二阈值时,将所述应用进程中相应于所述至少一个接口新增的应用线程保持等待状态。
3.根据权利要求1所述的方法,其特征在于,所述保持所述***服务进程中至少一个接口中所述应用进程占用的Binder线程的数量不大于第二阈值,包括:
当所述***服务进程中所述至少一个接口中所述应用进程占用的Binder线程的数量大于或等于所述第二阈值时,将所述应用进程中相应于所述至少一个接口新增的应用线程保持等待状态,待所述***服务进程中所述至少一个接口中所述应用进程占用的Binder线程的数量小于所述第二阈值时,将处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。
4.一种处理方法,应用于安装有多个应用的移动设备,其特征在于,包括:
当***服务进程中的Binder线程的数量大于或等于第一阈值时,确定第一应用进程,所述第一应用进程为至少一个应用进程中占用所述***服务进程的Binder线程的数量最多的应用进程;
保持所述第一应用进程占用所述***服务进程的Binder线程的数量不大于第二阈值,其中,所述第二阈值小于所述***服务进程包括的所有Binder线程的数量。
5.根据权利要求4所述的方法,其特征在于,所述保持所述第一应用进程占用所述***服务进程的Binder线程的数量不大于第二阈值,包括:
当所述第一应用进程占用所述***服务进程的Binder线程的数量大于或等于所述第二阈值时,将所述第一应用进程中新增的应用线程保持等待状态。
6.根据权利要求4所述的方法,其特征在于,所述保持所述第一应用进程占用所述***服务进程的Binder线程的数量不大于第二阈值,包括:
当所述第一应用进程占用所述***服务进程的Binder线程的数量大于或等于所述第二阈值时,将所述第一应用进程中新增的应用线程保持等待状态,待所述第一应用进程占用所述***服务进程的Binder线程的数量小于所述第二阈值时,将所述第一应用进程中处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。
7.根据权利要求4至6任一项所述的方法,其特征在于,所述***服务进程中的Binder线程的数量,包括:
所述***服务进程中至少一个接口的Binder线程的数量。
8.一种处理方法,应用于安装有多个应用的移动设备,其特征在于,包括:
当***服务进程中的Binder线程的数量大于或等于第一阈值时,确定第一接口,所述第一接口为所述***服务进程的所有接口中应用进程占用的Binder线程的数量最多的接口;
保持所述第一接口中第一应用进程占用所述***服务进程的Binder线程的数量不大于第二阈值,其中,所述第一应用进程为在所述第一接口中占用Binder线程的数量最多的应用进程,其中,所述第二阈值小于所述***服务进程包括的所有Binder线程的数量。
9.根据权利要求8所述的方法,其特征在于,所述保持所述第一接口中第一应用进程占用所述***服务进程的Binder线程的数量不大于第二阈值,包括:
当所述第一接口中第一应用进程占用所述***服务进程的Binder线程的数量大于或等于所述第二阈值时,将所述第一应用进程中新增的应用线程保持等待状态。
10.根据权利要求8所述的方法,其特征在于,所述保持所述第一应用进程占用所述***服务进程的Binder线程的数量不大于第二阈值,包括:
当所述第一接口中第一应用进程占用所述***服务进程的Binder线程的数量大于或等于所述第二阈值时,将所述第一应用进程中新增的应用线程保持等待状态,待所述第一应用进程占用所述***服务进程的Binder线程的数量小于所述第二阈值时,将所述第一应用进程中处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。
11.一种移动设备,所述移动设备安装有多个应用,其特征在于,包括:
确定单元,用于当一个应用的一个应用进程的应用线程数量大于或等于第一阈值时,确定***服务进程中各个接口中所述应用进程占用的Binder线程的数量,所述应用进程的一个应用线程对应所述***服务进程中的一个Binder线程;
处理单元,用于保持所述***服务进程中至少一个接口中所述应用进程占用的Binder线程的数量不大于第二阈值,其中,所述第二阈值小于所述***服务进程包括的所有Binder线程的数量。
12.根据权利要求11所述的移动设备,其特征在于,所述处理单元,具体用于:
当所述***服务进程中所述至少一个接口中所述应用进程占用的Binder线程的数量大于或等于所述第二阈值时,将所述应用进程中相应于所述至少一个接口新增的应用线程保持等待状态。
13.根据权利要求11所述的移动设备,其特征在于,所述处理单元,具体用于:
当所述***服务进程中所述至少一个接口中所述应用进程占用的Binder线程的数量大于或等于所述第二阈值时,将所述应用进程中相应于所述至少一个接口新增的应用线程保持等待状态,待所述***服务进程中所述至少一个接口中所述应用进程占用的Binder线程的数量小于所述第二阈值时,将处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。
14.一种移动设备,所述移动设备安装有多个应用,其特征在于,包括:
确定单元,用于当***服务进程中的Binder线程的数量大于或等于第一阈值时,确定第一应用进程,所述第一应用进程为至少一个应用进程中占用所述***服务进程的Binder线程的数量最多的应用进程;
处理单元,用于保持所述第一应用进程占用所述***服务进程的Binder线程的数量不大于第二阈值,其中,所述第二阈值小于所述***服务进程包括的所有Binder线程的数量。
15.根据权利要求14所述的移动设备,其特征在于,所述处理单元,具体用于:
当所述第一应用进程占用所述***服务进程的Binder线程的数量大于或等于所述第二阈值时,将所述第一应用进程中新增的应用线程保持等待状态。
16.根据权利要求14所述的移动设备,其特征在于,所述处理单元,具体用于:
当所述第一应用进程占用所述***服务进程的Binder线程的数量大于或等于所述第二阈值时,将所述第一应用进程中新增的应用线程保持等待状态,待所述第一应用进程占用所述***服务进程的Binder线程的数量小于所述第二阈值时,将所述第一应用进程中处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。
17.根据权利要求14至16任一项所述的移动设备,其特征在于,所述***服务进程中的Binder线程的数量,包括:
所述***服务进程中至少一个接口的Binder线程的数量。
18.一种移动设备,所述移动设备安装有多个应用,其特征在于,包括:
确定单元,用于当***服务进程中的Binder线程的数量大于或等于第一阈值时,确定第一接口,所述第一接口为所述***服务进程的所有接口中应用进程占用的Binder线程的数量最多的接口;
处理单元,用于保持所述第一接口中第一应用进程占用所述***服务进程的Binder线程的数量不大于第二阈值,所述第一应用进程为在所述第一接口中占用Binder线程的数量最多的应用进程,其中,所述第二阈值小于所述***服务进程包括的所有Binder线程的数量。
19.根据权利要求18所述的移动设备,其特征在于,所述处理单元,具体用于:
当所述第一接口中第一应用进程占用所述***服务进程的Binder线程的数量大于或等于所述第二阈值时,将所述第一应用进程中新增的应用线程保持等待状态。
20.根据权利要求18所述的移动设备,其特征在于,所述处理单元,具体用于:
当所述第一接口中第一应用进程占用所述***服务进程的Binder线程的数量大于或等于所述第二阈值时,将所述第一应用进程中新增的应用线程保持等待状态,待所述第一应用进程占用所述***服务进程的Binder线程的数量小于所述第二阈值时,将所述第一应用进程中处于等待状态的新增的应用线程中至少一个应用线程分配相应的Binder线程。
21.一种移动设备,其特征在于,包括处理器和存储器,所述存储器用于存储指令,所述处理器用于执行所述指令以使得所述移动设备执行如权利要求1-10任一项所述的方法。
22.一种计算机可读存储介质,其特征在于,包括指令,当其在移动设备上运行时,使得所述移动设备执行如权利要求1-10任一项所述方法。
23.一种芯片,其特征在于,所述芯片包括处理器和存储器,所述存储器用于与所述处理器耦合,用于保存所述芯片的程序指令和数据,所述处理器用于执行所述存储器中存储的程序指令,使得所述芯片执行如权利要求1-10任一项所述方法。
CN201780074368.4A 2017-10-09 2017-10-13 一种处理方法及装置 Active CN110023907B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2017109312924 2017-10-09
CN201710931292 2017-10-09
PCT/CN2017/106193 WO2019071616A1 (zh) 2017-10-09 2017-10-13 一种处理方法及装置

Publications (2)

Publication Number Publication Date
CN110023907A CN110023907A (zh) 2019-07-16
CN110023907B true CN110023907B (zh) 2021-08-20

Family

ID=66101191

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780074368.4A Active CN110023907B (zh) 2017-10-09 2017-10-13 一种处理方法及装置

Country Status (4)

Country Link
US (1) US20200257558A1 (zh)
EP (1) EP3674894A4 (zh)
CN (1) CN110023907B (zh)
WO (1) WO2019071616A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113220495B (zh) * 2021-05-24 2024-04-16 浙江大华技术股份有限公司 一种进程异常事件处理方法、装置、电子设备及存储介质
CN116048771B (zh) * 2022-08-15 2023-10-20 荣耀终端有限公司 一种资源调度方法及相关设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102147746A (zh) * 2010-03-05 2011-08-10 微软公司 动态线程池管理
CN102325148A (zh) * 2011-05-25 2012-01-18 重庆新媒农信科技有限公司 一种WebService服务调用方法
CN102486740A (zh) * 2010-12-03 2012-06-06 中国科学院沈阳自动化研究所 一种多线程实时数据处理装置及方法
CN103246552A (zh) * 2012-02-14 2013-08-14 腾讯科技(深圳)有限公司 防止线程出现阻塞的方法和装置
CN106385341A (zh) * 2016-08-31 2017-02-08 福建天晴数码有限公司 客户端监控线程的方法及其***
CN106775990A (zh) * 2016-12-31 2017-05-31 ***通信集团江苏有限公司 请求调度方法和装置
CN106776080A (zh) * 2016-12-29 2017-05-31 北京奇虎科技有限公司 工作线程的连接建立方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182109B1 (en) * 1996-03-08 2001-01-30 International Business Machines Corporation Dynamic execution unit management for high performance user level network server system
US7363626B2 (en) * 2003-03-24 2008-04-22 Sun Microsystems, Inc. Thread level application partitioning
US20110113134A1 (en) * 2009-11-09 2011-05-12 International Business Machines Corporation Server Access Processing System
CN103279331A (zh) * 2013-05-31 2013-09-04 中国电子科技集团公司第十五研究所 Android***多任务并发处理方法及装置
CN103455355B (zh) * 2013-09-05 2017-02-22 南京朗睿软件科技有限公司 安卓设备及其适配器视图的异步数据加载方法及装置
JP2017010473A (ja) * 2015-06-26 2017-01-12 株式会社野村総合研究所 ジョブ実行制御システム及び方法
CN106557369B (zh) * 2016-11-25 2020-08-04 武汉斗鱼网络科技有限公司 一种多线程的管理方法及***

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102147746A (zh) * 2010-03-05 2011-08-10 微软公司 动态线程池管理
CN102486740A (zh) * 2010-12-03 2012-06-06 中国科学院沈阳自动化研究所 一种多线程实时数据处理装置及方法
CN102325148A (zh) * 2011-05-25 2012-01-18 重庆新媒农信科技有限公司 一种WebService服务调用方法
CN103246552A (zh) * 2012-02-14 2013-08-14 腾讯科技(深圳)有限公司 防止线程出现阻塞的方法和装置
CN106385341A (zh) * 2016-08-31 2017-02-08 福建天晴数码有限公司 客户端监控线程的方法及其***
CN106776080A (zh) * 2016-12-29 2017-05-31 北京奇虎科技有限公司 工作线程的连接建立方法及装置
CN106775990A (zh) * 2016-12-31 2017-05-31 ***通信集团江苏有限公司 请求调度方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Application-aware Group Scheduler for Android;Zongwei Zhu等;《The Fifth International Conference on the Applications of Digital Information and Web Technologies (ICADIWT 2014)》;20140515;第1-7页 *
Binder通信过程中的用户空间线程池的管理;山庄来客;《https://blog.csdn.net/fuyajun01/article/details/27710535》;20170705;第1-3页 *

Also Published As

Publication number Publication date
WO2019071616A1 (zh) 2019-04-18
US20200257558A1 (en) 2020-08-13
EP3674894A1 (en) 2020-07-01
CN110023907A (zh) 2019-07-16
EP3674894A4 (en) 2020-10-28

Similar Documents

Publication Publication Date Title
US10437631B2 (en) Operating system hot-switching method and apparatus and mobile terminal
JP7006780B2 (ja) システムサービスタイムアウト処理方法および装置
CN107526640B (zh) 资源管理方法、装置、移动终端及计算机可读存储介质
US10474507B2 (en) Terminal application process management method and apparatus
EP3471450B1 (en) Network bandwidth management method, terminal and computer storage medium
CN107590057B (zh) 冻屏监测与解决方法、移动终端及计算机可读存储介质
CN106775833B (zh) 设备驱动程序加载方法、终端及***
WO2018036505A1 (zh) 一种终端后台应用程序的管理方法及装置
CN110865884A (zh) 一种内存管理方法及装置
US9588757B2 (en) Data update method, user terminal, and data update system
WO2017206901A1 (zh) 进程控制方法及相关设备
CN110780940A (zh) 应用程序加载方法、电子设备和存储介质
WO2018161543A1 (zh) 指纹处理资源的控制方法及设备
CN111078523A (zh) 日志获取方法、装置、存储介质及电子设备
CN110023907B (zh) 一种处理方法及装置
CN114218560A (zh) 资源访问方法、装置、电子设备及存储介质
CN105278942B (zh) 组件管理方法及装置
WO2017215663A1 (zh) 一种音效处理的方法及终端
CN107463395B (zh) 组件调用方法及装置
CN109614042B (zh) 一种存储日志信息的方法及终端设备
CN111966425A (zh) 进程清理方法、装置、存储介质及移动终端
CN107122204B (zh) 应用的卸载状态检测方法及装置
CN113039517B (zh) 一种音频资源调用的方法、装置及电子设备
WO2020097787A1 (zh) 一种音频资源释放的方法、装置及电子设备
CN106471464B (zh) 一种防止安卓设备被超级用户(Root)的方法、装置以及终端

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