CN116088955A - 进程处理方法和终端设备 - Google Patents

进程处理方法和终端设备 Download PDF

Info

Publication number
CN116088955A
CN116088955A CN202210687952.XA CN202210687952A CN116088955A CN 116088955 A CN116088955 A CN 116088955A CN 202210687952 A CN202210687952 A CN 202210687952A CN 116088955 A CN116088955 A CN 116088955A
Authority
CN
China
Prior art keywords
application
preset
terminal device
strong dependency
uid
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.)
Granted
Application number
CN202210687952.XA
Other languages
English (en)
Other versions
CN116088955B (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.)
Honor Device Co Ltd
Original Assignee
Honor Device 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 Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202210687952.XA priority Critical patent/CN116088955B/zh
Publication of CN116088955A publication Critical patent/CN116088955A/zh
Application granted granted Critical
Publication of CN116088955B publication Critical patent/CN116088955B/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44594Unloading
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种进程处理方法和终端设备,该方法包括:利用第二进程访问第一进程;杀掉第一进程;判断第二进程是否满足保活条件,第一进程对应第一应用,第二进程对应第二应用;若第二进程满足保活条件、第一应用与第二应用不存在强依赖关系,以及,第一进程与第二进程不存在强依赖关系,不杀第二进程;若第二进程不满足保活条件,或者,第一应用与第二应用存在强依赖关系,或者,第一进程与第二进程存在强依赖关系,杀掉第二进程。该方法并不是杀掉所有访问第一进程的第二进程,可以降低因杀掉第二进程而导致应用程序闪退的概率。

Description

进程处理方法和终端设备
技术领域
本申请涉及终端技术领域,尤其涉及一种进程处理方法和终端设备。
背景技术
目前,随着终端技术的发展,终端设备已经成为人们工作生活的一部分。通常,终端设备安装有多个应用程序(application,APP),不同的应用程序可以为用户提供不同的服务,丰富以及方便用户的生活。
但是,用户经常反馈在使用应用程序时,应用程序会出现闪退的现象,无法正常运行,影响使用。
因此,避免应用程序闪退成为了一个亟需解决的问题。
发明内容
本申请提供一种进程处理方法和终端设备,可以降低应用程序闪退的概率。
第一方面,提供了一种进程处理方法,包括:利用第二进程访问第一进程;杀掉第一进程;判断第二进程是否满足保活条件,第一进程对应第一应用,第二进程对应第二应用;若第二进程满足保活条件、第一应用与第二应用不存在强依赖关系,以及,第一进程与第二进程不存在强依赖关系,不杀第二进程;若第二进程不满足保活条件,或者,第一应用与第二应用存在强依赖关系,或者,第一进程与第二进程存在强依赖关系,杀掉第二进程。
第一应用也可以称为第一应用程序,第二应用也可以称为第二应用程序,本申请实施例对此不作限定。第一应用或者第二应用可以是拨号应用程序、联系人应用程序、日历应用程序或者设置应用程序等等,但本申请实施例并不限于此。应理解,第一应用和第二应用是两个不同的应用。
第一进程为第一应用的内容提供者(ContentProvider)组件所在的进程。第一进程可以是异常进程,但本申请实施例并不限于此。
终端设备杀掉第一进程,其中,杀掉第一进程可以理解为结束第一进程,或者,终结第一进程。杀掉第一进程也可以称为查杀(kill)第一进程,本申请实施例对此不作限定。
利用第二进程访问第一进程,也可以称为第二进程访问了第一进程,第二进程访问了第一进程可以理解为第二进程获取了第一进程的数据,或者,第二进程对第一进程进行了操作(例如查询或者写操作),或者,第二进程拉起第一进程,或者,第二进程和第一进程均与同一个进程相关。
第二进程的数量可以是一个,也可以是多个,本申请实施例对此不作限定。
保活条件可以是一个,也可以是多个,本申请实施例对此不作限定。
当满足以下任一个条件时,杀掉第二进程:第二进程不满足保活条件;第二进程满足第一应用与第二应用存在强依赖关系;或者,第一进程与第二进程存在强依赖关系。
本申请提供的进程处理方法,第二进程满足保活条件、第一应用与第二应用不存在强依赖关系,以及,第一进程与第二进程不存在强依赖关系,可以说明第二进程虽访问了第一进程,但是第二进程与第一进程的关联性不强,且第二进程满足保活条件,说明比较重要,终端设备可以保留第二进程,可以降低因杀掉第二进程而导致应用程序闪退的概率。
结合第一方面,在第一方面的某些实现方式中,保活条件包括以下至少一个:第二进程的进程状态是预设类型;第二进程的用户标识(user identification,UID)小于或等于预设值;第二进程的进程名为预设名称;或者,预设参数的参数值为真,预设参数表示第二进程为常驻进程。
研发人员可以将影响用户体验的进程或者将影响终端设备正常运行的进程的进程状态设置为预设类型。若第二进程的进程状态是预设类型,可以保留该第二进程。
若第二进程的UID小于或等于预设值,可以说明第二进程是关键进程,例如,通知栏常驻进程、系统进程、锁屏进程以及电话进程等等。若关键进程被杀掉,会影响用户体验,终端设备可以保留此进程。
预设参数用于表示第二进程为常驻进程,若预设参数的参数值为真,终端设备可以保留第二进程。
预设名称可以为通知栏常驻进程的进程名称、系统进程的进程名称、锁屏进程的进程名称以及电话进程的进程名称中的至少一个。若第二进程的进程名为预设名称,终端设备可以保留第二进程。
本申请提供的进程处理方法,可以存在一个或多个保活条件,可以涉及多种不同的特殊场景,可以更好地对各种影响用户体验的进程进行保留,灵活性更强,同时,可以更好地保护进程。
结合第一方面,在第一方面的某些实现方式中,方法还包括:判断第一应用与第二应用之间的对应关系是否在预设对应关系中,预设对应关系用于表示强依赖关系;若第一应用与第二应用之间的对应关系不在预设对应关系中,则确定第一应用与第二应用不存在强依赖关系。
不同应用之间的强依赖关系可以指不同应用程序之间存在数据交互。研发人员可以将终端设备安装的所有应用之间具有强依赖关系的应用以对应关系的形式预设在终端设备内。若第一应用与第二应用之间的对应关系不在预设对应关系中,则确定第一应用与第二应用不存在强依赖关系。
本申请提供的进程处理方法,将具有强依赖关系的应用以对应关系的形式表示,在判断第一应用与第二应用之间是否具有强依赖关系时,可以通过对应关系确定,可以较快地得到结论,有利于提高运算速率。
结合第一方面,在第一方面的某些实现方式中,方法还包括:判断第一进程的UID和第二进程的UID是否相同;若第一进程的UID和第二进程的UID不同,则确定第一进程与第二进程不存在强依赖关系。
目前的应用程序大多使用单应用多进程的实现方式,即一个主进程加多个子进程的方式。其中,该多个子进程具有相同的UID。若不同的进程具有相同的UID,可以说明进程之间具有强依赖关系。
本申请提供的进程处理方法,通过判断第一进程和第二进程是否具有相同的UID,判断第一进程和第二进程是否具有强依赖关系,判断方法简单,有利于提高运算速率。
第二方面,提供了一种终端设备,包括:处理模块和判断模块。其中,处理模块用于:利用第二进程访问第一进程;杀掉第一进程;判断模块用于:判断第二进程是否满足保活条件,第一进程对应第一应用,第二进程对应第二应用;处理模块还用于:若第二进程满足保活条件、第一应用与第二应用不存在强依赖关系,以及,第一进程与第二进程不存在强依赖关系,不杀第二进程;以及,若第二进程不满足保活条件,或者,第一应用与第二应用存在强依赖关系,或者,第一进程与第二进程存在强依赖关系,杀掉第二进程。
结合第二方面,在第二方面的某些实现方式中,保活条件包括以下至少一个:第二进程的进程状态是预设类型;第二进程的用户标识UID小于或等于预设值;第二进程的进程名为预设名称;或者,预设参数的参数值为真,预设参数表示第二进程为常驻进程。
结合第二方面,在第二方面的某些实现方式中,判断模块还用于:判断第一应用与第二应用之间的对应关系是否在预设对应关系中,预设对应关系用于表示强依赖关系;处理模块还用于:若第一应用与第二应用之间的对应关系不在预设对应关系中,则确定第一应用与第二应用不存在强依赖关系。
结合第二方面,在第二方面的某些实现方式中,判断模块还用于:判断第一进程的UID和第二进程的UID是否相同;处理模块还用于:若第一进程的UID和第二进程的UID不同,则确定第一进程与第二进程不存在强依赖关系。
第三方面,本申请提供了一种终端设备,包括处理器,该处理器与存储器耦合,可用于执行存储器中的指令,以实现上述第一方面中任一种可能实现方式中的方法。可选地,该终端设备还包括存储器。可选地,该终端设备还包括通信接口,处理器与通信接口耦合。
第四方面,本申请提供了一种处理器,包括:输入电路、输出电路和处理电路。处理电路用于通过输入电路接收信号,并通过输出电路发射信号,使得处理器执行上述第一方面中任一种可能实现方式中的方法。
在具体实现过程中,上述处理器可以为芯片,输入电路可以为输入管脚,输出电路可以为输出管脚,处理电路可以为晶体管、门电路、触发器和各种逻辑电路等。输入电路所接收的输入的信号可以是由例如但不限于接收器接收并输入的,输出电路所输出的信号可以是例如但不限于输出给发射器并由发射器发射的,且输入电路和输出电路可以是同一电路,该电路在不同的时刻分别用作输入电路和输出电路。本申请对处理器及各种电路的具体实现方式不做限定。
第五方面,本申请提供了一种处理装置,包括处理器和存储器。该处理器用于读取存储器中存储的指令,并可通过接收器接收信号,通过发射器发射信号,以执行上述第一方面中任一种可能实现方式中的方法。
可选地,处理器为一个或多个,存储器为一个或多个。
可选地,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型以及存储器与处理器的设置方式不做限定。
应理解,相关的数据交互过程例如发送指示信息可以为从处理器输出指示信息的过程,接收能力信息可以为处理器接收输入能力信息的过程。具体地,处理输出的数据可以输出给发射器,处理器接收的输入数据可以来自接收器。其中,发射器和接收器可以统称为收发器。
上述第五方面中的处理装置可以是一个芯片,该处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。
第六方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。
第七方面,本申请提供了一种计算机程序产品,计算机程序产品包括:计算机程序(也可以称为代码,或指令),当计算机程序被运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。
附图说明
图1是一种手机拨号界面闪退的示意图;
图2是一种界面闪退的示意性框图;
图3是一种桌面控件消失的示意性框图;
图4是一种界面闪退的示意性框图;
图5是本申请实施例提供的一种终端设备的结构示意图;
图6是本申请实施例适用的一种终端设备的软件结构框图;
图7是本申请实施例提供的一种进程处理方法的示意性流程图;
图8是本申请实施例提供的一种进程处理的示意性框图;
图9是本申请实施例提供的一种终端设备的示意性框图;
图10是本申请实施例提供的另一种终端设备的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
手机安装有大量的应用程序,例如,通讯录应用程序、短信应用程序、天气应用程序以及日历应用程序等等,这些应用程序包括终端设备出厂前预设的应用程序,也可以包括用户自行下载的应用程序。
目前,手机售后维修处经常接收到用户的使用反馈信息,用户反馈的问题是:在使用应用程序时,应用程序会出现闪退的现象,无法正常运行,影响使用。
示例性地,图1示出了一种手机拨号界面闪退的示意图。用户使用拨号应用程序拨打电话,手机响应于用户的操作,可以显示拨号界面,如图1中的a界面所示。用户在拨号界面点击数字控件之前,或者在点击数字控件之后,手机关闭了图1中的a界面,显示图1中的b界面,即手机并没有接收到用户关闭图1中a界面的操作,自动关闭了图1中的a界面,显示了图1中的b界面,发生了闪退的情况,导致拨号应用程序无法正常使用,影响用户的体验。
本申请的研究人员针对应用闪退的现象进行了研究,通过对应用程序的日志进行分析得到,应用程序闪退是因为该应用程序的进程访问了其他应用程序的进程,当其他应用程序的进程被杀掉时,也会杀掉访问此进程(即被杀掉的进程)的进程,故该应用程序的进程杀掉,导致该应用程序闪退,使应用程序无法正常使用,影响用户的体验。
具体地,应用程序一般都包括内容提供者(ContentProvider)组件,例如,拨号应用程序包括电话通讯提供者(TelephonyProvider)组件,联系人应用程序包括联系人提供者(ContactProvider)组件,日历应用程序包括日历提供者(CalendarProvider)组件、设置应用程序包括设置提供者(SettingProvider)组件等。内容提供者(可以简称为CP)组件是安卓(Android)系统的四大组件,管理安卓系统中以结构化方式存放的数据,提供简易的处理机制和统一的访问接口供其他应用程序调用,并提供数据库增删查改的数据操作方式,可以在不同的应用程序之间共享数据,支持不同应用程序之间的跨进程访问。例如,应用程序之间可以使用内容解析器(ContentResolver)进行数据查询(query)操作。
应用程序闪退是因为该应用程序的内容提供者组件所在进程访问了其他应用程序的内容提供者组件所在进程,其他应用程序的内容提供者组件所在进程被杀掉时,该应用程序的内容提供者所在进程也被杀掉。其中,一个进程访问另一个进程可以指一个进程获取另一个进程的数据,或者,一个进程对另一个进程进行了操作,或者,一个进程拉起另一个进程,或者,一个进程和另一个进程均与同一个进程相关。
例如,图2示出了一种界面闪退的示意性框图。如图2所示,应用程序1的内容提供者组件所在进程1通过内容解析器对应用程序2的内容提供者组件所在进程2进行了查询操作,进程2由于应用程序2自身异常、系统清理或者低内存查杀等原因被杀掉,终端设备的活动管理服务(ActivityManagerService,AMS)会杀掉访问了进程2的进程。进程1对进程2进程了查询操作,故进程1访问了进程2,则进程1被AMS杀掉,若应用程序1以界面的形式显示,则界面闪退。
若在上述图1所示的场景中,拨号应用程序可以为应用程序1,拨号应用程序的电话通讯提供者组件所在进程为进程1,进程1访问了其他应用程序的内容提供者组件所在进程,即进程2,进程2被杀掉时,进程1也会被杀掉,导致进程1也会被杀掉,使拨号应用程序出现闪退,无法正常使用,影响用户的体验。
又如,图3示出了一种桌面控件消失的示意性框图。如图3所示,桌面天气控件可以通过桌面天气控件的内容提供者组件所在进程3从天气应用程序的内容提供者组件所在进程4中获取天气数据进行显示。若进程4由于天气应用程序自身异常、系统清理或者低内存查杀等原因被杀掉,AMS会杀掉访问了进程4的进程。进程3获取了进程4中的数据,故进程3访问了进程4,则进程3被AMS杀掉,桌面天气控件的显示界面消失。
再如,图4示出了一种界面闪退的示意性框图。如图4所示,系统联系人的内容提供者组件所在进程5启动时,可以通过AMS拉起具有联系人属性的三方应用程序的内容提供者组件所在进程6,若该三方应用程序异常导致进程6被杀掉时,AMS会杀掉访问了进程6的进程。进程6是由进程5拉起的,故进程5访问了进程6,则进程5被杀掉,若系统联系人以界面的形式显示,则界面闪退。
有鉴于此,本申请实施例提供了一种进程处理方法和终端设备,可以降低应用程序闪退的概率。
本申请实施例的方法可以应用于适用于可以安装应用程序的终端设备,该终端设备可以为手机、平板电脑、个人计算机(personal computer,PC)、智慧屏、人工智能(artificial intelligence,AI)音箱、耳机、车机设备以及智能手表等可穿戴终端设备,还可以是各种教学辅助工具(例如学习机、早教机)、智能玩具、便携式机器人、个人数字助理(personal digital assistant,PDA)、增强现实技术(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备等,也可以是具有移动办公功能的设备、具有智能家居功能的设备、具有影音娱乐功能的设备、支持智能出行的设备等。应理解,本申请的实施例对终端设备所采用的具体技术和具体设备形态不做限定。
为了能够更好地理解本申请实施例,下面对本申请实施例的终端设备的硬件结构进行介绍。示例性地,图5为本申请实施例提供的一种终端设备的结构示意图。
终端设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,收话器170B,麦克风170C,传感器模块180,按键190,指示器192,摄像头193,以及显示屏194等。
可选地,上述传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对终端设备的具体限定。在本申请另一些实施例中,终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器110中还可以设置存储器,用于存储指令和数据。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为终端设备充电,也可以用于终端设备与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端设备,例如AR设备等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。电源管理模块141用于连接充电管理模块140与处理器110。
终端设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。终端设备中的天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
移动通信模块150可以提供应用在终端设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。
无线通信模块160可以提供应用在终端设备上的包括无线局域网(wirelesslocalarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM)等无线通信的解决方案。
终端设备通过GPU,显示屏194以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。在一些实施例中,终端设备可以包括1个或N个显示屏194,N为大于1的正整数。
终端设备可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
摄像头193用于捕获静态图像或视频。在一些实施例中,终端设备可以包括1个或N个摄像头193,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。
终端设备可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。终端设备可以通过扬声器170A收听音乐,或收听免提通话。受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当终端设备接听电话或语音信息时,可以通过将收话器170B靠近人耳接听语音。麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。陀螺仪传感器180B可以用于确定终端设备的运动姿态。气压传感器180C用于测量气压。磁传感器180D包括霍尔传感器。加速度传感器180E可检测终端设备在各个方向上(一般为三轴)加速度的大小。距离传感器180F,用于测量距离。接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。环境光传感器180L用于感知环境光亮度。指纹传感器180H用于采集指纹。温度传感器180J用于检测温度。触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。骨传导传感器180M可以获取振动信号。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端设备可以接收按键输入,产生与终端设备的用户设置以及功能控制有关的键信号输入。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
终端设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。分层架构可以采用安卓(Android)系统,也可以采用苹果(IOS)系统,还可以采样其他操作系统,本申请实施例对此不作限定。下面以分层架构的Android系统为例,示例性说明终端设备的软件结构。
图6为本申请实施例适用的一种终端设备的软件结构框图。分层架构将终端设备的软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,可以将Android系统分为四层,从上到下依次为应用程序层(applications)、应用程序框架层(application framework)、安卓运行时(Androidruntime)和系统库、以及内核层(kernel)。
应用程序层可以包括一系列应用程序包,应用程序层通过调用应用程序框架层所提供的应用程序接口(application programming interface,API)运行应用程序。如图6所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,蓝牙,音乐,视频,短信等应用程序。
应用程序框架层为应用程序层的应用程序提供API和编程框架。应用程序框架层包括一些预先定义的函数。如图6所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。电话管理器用于提供终端设备的通信功能。例如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
安卓系统运行时包括核心库和虚拟机。安卓系统运行时负责安卓系统的调度和管理。核心库包含两部分:一部分是Java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的Java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。系统库可以包含多个功能的模块,例如:表面管理器,媒体库以及三维图形处理库等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维图层和三维图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成和图层处理等。
内核层是硬件和软件之间的层。内核层用于驱动硬件,使得硬件工作。内核层至少包含显示驱动,屏幕驱动、摄像头驱动以及传感器驱动等,本申请实施例对此不做限制。
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
此外,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,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可以是单个,也可以是多个。
图7为本申请实施例提供的一种进程处理方法700的示意性流程图,该方法700可以由终端设备执行,例如,上述图1所示的手机。终端设备的硬件结构图可以如图5所示,终端设备的软件结构框图可以如图6所示,但本申请实施例并不限于此。
如图7所示,该方法700可以包括如下步骤:
S701、终端设备杀掉第一应用的第一进程。
第一应用也可以称为第一应用程序,本申请实施例对此不作限定。第一应用可以是拨号应用程序、联系人应用程序、日历应用程序或者设置应用程序等等,但本申请实施例并不限于此。
第一进程为第一应用的内容提供者(ContentProvider)组件所在的进程。第一进程可以是异常进程,但本申请实施例并不限于此。
终端设备杀掉第一进程,其中,杀掉第一进程可以理解为结束第一进程,或者,终结第一进程。杀掉第一进程也可以称为查杀(kill)第一进程,本申请实施例对此不作限定。
S702、若第二进程访问了第一进程,获取第二进程的进程状态。
第二进程访问了第一进程可以理解为第二进程获取了第一进程的数据,或者,第二进程对第一进程进行了操作(例如查询或者写操作),或者,第二进程拉起第一进程,或者,第二进程和第一进程均与同一个进程相关。
第二进程可以是第二应用的内容提供者组件所在进程。其中,第一应用和第二应用是两个不同的应用。
当杀掉第一进程时,终端设备检测到第二进程访问了第一进程,则可以获取第二进程的进程状态。
进程状态可以包括前台顶端进程、可见进程、重量级进程、运行备份还原的进程、前台重要进程、后台重要进程,服务进程、后台进程、缓存进程以及空进程等等。不同的进程状态可以通过不同的进程状态名称进行区分。
示例性地,进程状态和进程状态名称的对应关系可以如表一所示。需要说明的是,表一中所示的进程状态和进程状态名称仅仅为一个示例,本申请实施例并不限于此。
表一
Figure BDA0003700409600000091
Figure BDA0003700409600000101
若终端设备利用ProcessRecord.java@mCurProcState记录第二进程的进程状态,则终端设备可以通过ProcessRecord.java@mCurProcState记录的进程状态名称获取第二进程的进程状态。
S703、终端设备判断第二进程的进程状态是否为预设类型。
研发人员可以将影响用户体验的进程或者将影响终端设备正常运行的进程的进程状态设置为预设类型。
示例性地,预设类型可以包括前台顶端进程、可见进程、重量级进程、运行备份还原的进程、前台重要进程以及后台重要进程。服务进程、后台进程、缓存进程以及空进程可以为非预设类型。
在上述表一中,进程运行,但无实体、常驻内存进程、常驻内存进程,且界面显示、顶端进程、进程的服务组件被绑定、进程正在运行前台服务组件、顶端进程,且处于锁屏状态、前台重要进程、后台重要进程、运行备份还原的进程以及重量级进程均可以为预设类型。
若第二进程的进程状态不是预设类型,终端设备可以继续对第二进程进行判断,以确定是否要保留此进程,即可以执行S704。其中,保留第二进程也可以称为保活第二进程,本申请实施例对此不作限定。
若第二进程的进程状态是预设类型,终端设备可以保留此进程,但仍需判断第一进程和第二进程之间是否存在强依赖关系,即终端设备可以执行S707。
S704、若第二进程的进程状态不是预设类型,则终端设备判断第二进程的用户标识(user identification,UID)是否小于或等于预设值。
预设值可以是10000,但本申请实施例并不限于此。
示例性地,终端设备可以通过ProcessRecord.java@获取第二进程的UID,并判断该UID是否小于或等于10000。
若第二进程的UID小于或等于预设值,可以说明第二进程是关键进程,例如,通知栏常驻进程、系统进程、锁屏进程以及电话进程等等。若关键进程被杀掉,会影响用户体验,终端设备可以保留此进程,但仍需判断第一进程对应的第一应用和第二进程对应的第二应用之间是否存在强依赖关系,即终端设备可以执行S707。
若第二进程的UID大于预设值,终端设备可以继续对第二进程进行判断,以确定是否要保留此进程,即可以执行S705。
S705、若第二进程的UID大于预设值,则终端设备判断预设参数的参数值是否为真(true)。
预设参数可以是mPersistent,但本申请实施例并不限于此。当mPersistent=true时,可以表示是常驻进程。
若预设参数的参数值为真,则终端设备可以保留此进程,但仍需判断第一进程对应的第一应用和第二进程对应的第二应用之间是否存在强依赖关系,即终端设备可以执行S707。
若预设参数的参数值为假,则终端设备可以继续对第二进程进行判断,以确定是否要保留此进程,即执行S706。
S707、若预设参数的参数值为假,则终端设备判断第二进程的进程名(processName)是否为预设名称。
预设名称可以为通知栏常驻进程的进程名称、系统进程的进程名称、锁屏进程的进程名称以及电话进程的进程名称中的至少一个。
示例性地,终端设备可以利用ProcessRecord.java@获取第二进程的进程名,并判断其是否为预设名称。
若第二进程的进程名为预设名称,则终端设备可以保留此进程,但仍需判断第一进程对应的第一应用和第二进程对应的第二应用之间是否存在强依赖关系,即终端设备可以执行S707。
若第二进程的进程名不是预设名称,则终端设备不保留此进程,可以杀掉第二进程,即可以执行S709。
需要说明的是,本申请实施例对S703、S704、S705以及S706的执行顺序不作限定。
S707、终端设备判断第二进程对应的第二应用与第一进程对应的第一应用是否存在强依赖关系。
当满足以下任一条件时,终端设备可以执行S707:第二进程的进程状态是预设类型;第二进程的UID小于或等于预设值;第二进程的进程名为预设名称;或者,预设参数的参数值为真。这些条件中的任一条件均可以称为保活条件,这些条件若组成条件集合,可以称为保活条件集合,但本申请实施例对此不作限定。故执行S707的条件可以简述为:满足保活条件集合中的任一保活条件,均可执行S707。
不同应用之间的强依赖关系可以指不同应用程序之间存在数据交互。不同应用之间的强依赖关系可以理解为不同应用的内容提供者组件之间的强依赖关系。
对于终端设备出厂前的预设应用,研发人员可以将预设应用之间的依赖关系预设在终端设备中。预设应用之间的依赖关系可以以表格、文字或者矩阵的形式表示,本申请实施例对此不作限定。
可选地,预设应用较多,每两个应用之间均具有依赖关系,若研发人员将所有预设应用之间的依赖关系均预设在终端设备中,工作量较大。研发人员可以仅将具有强依赖关系的应用预设在终端设备内。具有强依赖关系的应用可以以对应关系的形式表示。
示例性地,具有强依赖关系的应用的对应关系可以以表格的形式表示,如表二所示。
表二
应用对应的内容提供者组件名称 具有强依赖关系的应用的内容提供者组件名称
com.android.providers.telephony com.hihonor.mms,com.android.phone,
com.android.providers.contacts com.hihonor.contacts
com.android.providers.calendar com.hihonor.calendar
com.android.providers.settings com.hihonor.settings
对于终端设备出厂后,用户自行下载的应用,终端设备可以提供接口以动态添加或者删除依赖关系。例如,增加依赖关系的接口可以为addProviderDepend(providername,applist),删除依赖关系的接口可以为removeProviderDepend(provider name,applist)。
示例性地,终端设备可以检测用户下载的应用之间或者用户下载的应用与预设应用之间是否存在数据交互,若存在数据交互,通过增加依赖关系的接口将其增加至强依赖关系。
终端设备可以利用checkProcsStrongDataDepend()函数判断第二进程对应的第二应用与第一进程对应的第一应用是否存在强依赖关系,但本申请实施例并不限于此。
示例性地,若第一应用的内容提供者组件名称和第二应用的内容提供者组件的名称不在上述表二中,则第二进程对应的第二应用与第一进程对应的第一应用不存在强依赖关系。若第一应用的内容提供者组件的名称在上述表二中,且与第一应用的内容提供者具有强依赖关系的内容提供者组件名称中包括第二应用的内容提供者组件名称,则第二进程对应的第二应用与第一进程对应的第一应用存在强依赖关系。若第一应用的内容提供者组件的名称在上述表二中,与第一应用的内容提供者具有强依赖关系的内容提供者组件名称中不包括第二应用对应的内容提供者组件名称,则第二进程对应的第二应用与第一进程对应的第一应用不存在强依赖关系。
若第二进程对应的第二应用与第一进程对应的第一应用存在强依赖关系,终端设备可以杀掉第二进程,即可以执行S709。若第二进程对应的第二应用与第一进程对应的第一应用不存在强依赖关系,终端设备可以执行S708。
S707、若第二进程对应的第二应用与第一进程对应的第一应用不存在强依赖关系,则终端设备判断该第二进程与第一进程是否存在相同的UID。
目前的应用程序大多使用单应用多进程的实现方式,即一个主进程加多个子进程的方式。其中,该多个子进程具有相同的UID。若不同的进程具有相同的UID,可以说明进程之间具有强依赖关系。另外,不同的安卓安装包(android package,APK)可能通过分享用户标识(shareduserid)的方式,使两个APK具有相同的UID,则两个APP进程会具有相同的权限,可以互相访问任意数据,通常同个厂家不同APP之间可能会通过这种方式共享数据。
若第二进程对应的第二应用与第一进程对应的第一应用不存在强依赖关系,但第二进程与第一进程存在具有相同UID的进程,则第二进程与第一进程具有强依赖关系。
第二进程与第一进程不存在相同的UID,可以说明第二进程与第一进程不具有强依赖关系,没有必要杀掉第二进程,可以保留第二进程,故终端设备可以结束流程。
示例性地,终端设备可以通过ProcessRecord.java@UID获取第二进程与应用程序的内容提供者所在进程的UID,若两个进程的UID不相同,终端设备可以结束流程。
若第二进程与第一进程存在强依赖关系,终端设备杀掉第二进程,即可以执行S709。
S709、终端设备杀掉第二进程。
当不满足保活条件时,终端设备可以执行S709,保活条件包括以下至少一项:第二进程的进程状态是预设类型、第二进程的UID小于或等于预设值、第二进程的进程名为预设名称、以及,预设参数的参数值为真。需要说明的是,因为保活条件可以包含上述条件中的至少一个,可以是不满足保活条件中所有的条件时,执行S709。如果保活条件包含上述条件中的一项,则不满足该一项条件时,执行S709;如果保活条件包含上述条件中的多项,则不满足该多项条件时,执行S709。
满足任一保活条件,且第一进程对应的第一应用与第二进程对应的第二应用存在预设对应关系,则杀掉第二进程;
如果满足任一保活条件,且第二进程的UID与第一进程的UID相同,则杀掉第二进程。
其中,第一进程对应的第一应用与第二进程对应的第二应用存在强依赖关系和第二进程与第一进程存在强依赖关系均可以称为存在强依赖关系。故执行S709的条件可以简述为:不满足保活条件集合中的所有保活条件,或者,满足保活条件集合中的任一保活条件,且存在任一强依赖关系。
终端设备保留(不杀)第二进程的条件可以简述为:满足保活条件集合中的任一保活条件,且第二进程对应的第二应用与第一进程对应的第一应用不存在强依赖关系,以及,第二进程与第一进程不具有强依赖关系。
本申请实施例提供的进程处理方法,在处理第二进程时,终端设备可以不杀掉进程状态为预设类型,且应用程序间及进程间均不具有强依赖关系的第二进程,还可以不杀掉UID小于或等于预设值,且应用程序间及进程间均不具有强依赖关系的第二进程,也可以不杀掉进程名为预设名称,且应用程序间及进程间均不具有强依赖关系的第二进程,还可以不杀掉预设参数的参数值为真,且应用程序间及进程间均不具有强依赖关系的第二进程,并不是杀掉所有访问第一进程的第二进程,可以降低应用程序闪退的频率,提高用户体验。
从上述方法700中可以看出,本申请实施例在查杀第二进程之前,增加了第二进程清理分析决策方法,通过判断第二进程的运行状态、第二进程对应的应用程序的依赖关系,第二进程间的依赖关系,以及第二进程的UID、预设参数的参数值以及进程名,确定是否要杀掉第二进程。
示例性地,图8示出了一种进程处理的示意性框图。如图8所示,进程1通过内容解析器对进程2进行了查询操作,进程2由于应用程序2自身异常、系统清理或者低内存查杀等原因被杀掉,AMS在对第二进程进行处理之前,可以通过调用分析决策接口(shouldKillConnecProcess(providerProc,connecProc))进行访问清理分析决策,利用上述方法700对进程1的运行状态进行分析,分析进程1对应的应用程序1和进程2对应的应用程序2的依赖关系、进程1和进程2的依赖关系,并获取进程1的UID、预设参数的参数值以及进程1的进程名进行分析,最终确定进程1的处理策略,即杀掉或者不进行处理,可以避免误杀进程1,降低界面闪退的频率,提高用户体验。
上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文中结合图1至图8,详细描述了本申请实施例提供的方法,下面将结合图9和图10,详细描述本申请实施例提供的终端设备。
图9示出了本申请实施例提供的一种终端设备900,该终端设备900包括:处理模块910和判断模块920。其中,处理模块910用于:利用第二进程访问第一进程;杀掉第一进程;判断模块920用于:判断第二进程是否满足保活条件,第一进程对应第一应用,第二进程对应第二应用;处理模块910还用于:若第二进程满足保活条件、第一应用与第二应用不存在强依赖关系,以及,第一进程与第二进程不存在强依赖关系,不杀第二进程;以及,若第二进程不满足保活条件,或者,第一应用与第二应用存在强依赖关系,或者,第一进程与第二进程存在强依赖关系,杀掉第二进程。
可选地,保活条件包括以下至少一个:第二进程的进程状态是预设类型;第二进程的用户标识UID小于或等于预设值;第二进程的进程名为预设名称;或者,预设参数的参数值为真,预设参数表示第二进程为常驻进程。
可选地,判断模块920还用于:判断第一应用与第二应用之间的对应关系是否在预设对应关系中,预设对应关系用于表示强依赖关系;处理模块910还用于:若第一应用与第二应用之间的对应关系不在预设对应关系中,则确定第一应用与第二应用不存在强依赖关系。
可选地,判断模块920还用于:判断第一进程的UID和第二进程的UID是否相同;处理模块910还用于:若第一进程的UID和第二进程的UID不同,则确定第一进程与第二进程不存在强依赖关系。
应理解,这里的终端设备900以功能模块的形式体现。这里的术语“模块”可以指应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。在一个可选的例子中,本领域技术人员可以理解,终端设备900可以具体为上述方法实施例中的终端设备,或者,上述方法实施例中终端设备的功能可以集成在终端设备900中,终端设备900可以用于执行上述方法实施例中与终端设备对应的各个流程和/或步骤,为避免重复,在此不再赘述。
上述终端设备900具有实现上述方法实施例中终端设备执行的相应步骤的功能;上述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
在本申请的实施例中,图9中的终端设备900也可以是芯片或者芯片系统,例如:片上系统(system on chip,SoC)。
图10是本申请实施例提供的另一种终端设备1000的示意性框图。该终端设备1000包括处理器1010、通信接口1020和存储器1030。其中,处理器1010、通信接口1020和存储器1030通过内部连接通路互相通信,该存储器1030用于存储指令,该处理器1020用于执行该存储器1030存储的指令,以控制该通信接口1020发送信号和/或接收信号。
应理解,终端设备1000可以具体为上述方法实施例中的终端设备,或者,上述方法实施例中终端设备的功能可以集成在终端设备1000中,终端设备1000可以用于执行上述方法实施例中与终端设备对应的各个步骤和/或流程。可选地,该存储器1030可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。该处理器1010可以用于执行存储器中存储的指令,并且该处理器执行该指令时,该处理器可以执行上述方法实施例中与终端设备对应的各个步骤和/或流程。
应理解,在本申请实施例中,该处理器1010可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器执行存储器中的指令,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,该计算机程序用于实现上述方法实施例中终端设备对应的方法。
本申请还提供了一种芯片系统,该芯片系统用于支持上述方法实施例中终端设备实现本申请实施例所示的功能。
本申请还提供了一种计算机程序产品,该计算机程序产品包括计算机程序(也可以称为代码,或指令),当该计算机程序在计算机上运行时,该计算机可以执行上述方法实施例所示的终端设备对应的方法。
本领域合法技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应所述以权利要求的保护范围为准。

Claims (12)

1.一种进程处理方法,其特征在于,包括:
利用第二进程访问第一进程;
杀掉所述第一进程;
判断所述第二进程是否满足保活条件,所述第一进程对应第一应用,所述第二进程对应第二应用;
若所述第二进程满足所述保活条件、所述第一应用与所述第二应用不存在强依赖关系,以及,所述第一进程与所述第二进程不存在强依赖关系,不杀所述第二进程;
若所述第二进程不满足所述保活条件,或者,所述第一应用与所述第二应用存在强依赖关系,或者,所述第一进程与所述第二进程存在强依赖关系,杀掉所述第二进程。
2.根据权利要求1所述的方法,其特征在于,所述保活条件包括以下至少一个:
所述第二进程的进程状态是预设类型;
所述第二进程的用户标识UID小于或等于预设值;
所述第二进程的进程名为预设名称;或者,
预设参数的参数值为真,所述预设参数表示所述第二进程为常驻进程。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
判断所述第一应用与所述第二应用之间的对应关系是否在预设对应关系中;
若所述第一应用与所述第二应用之间的对应关系不在预设对应关系中,则确定所述第一应用与所述第二应用不存在强依赖关系。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
判断所述第一进程的UID和所述第二进程的UID是否相同;
若所述第一进程的UID和所述第二进程的UID不同,则确定所述第一进程与所述第二进程不存在强依赖关系。
5.一种终端设备,其特征在于,包括:
处理模块,用于利用第二进程访问第一进程;杀掉所述第一进程;
判断模块,用于判断所述第二进程是否满足保活条件,所述第一进程对应第一应用,所述第二进程对应第二应用;
所述处理模块还用于:若所述第二进程满足所述保活条件、所述第一应用与所述第二应用不存在强依赖关系,以及,所述第一进程与所述第二进程不存在强依赖关系,不杀所述第二进程;以及,
若所述第二进程不满足所述保活条件,或者,所述第一应用与所述第二应用存在强依赖关系,或者,所述第一进程与所述第二进程存在强依赖关系,杀掉所述第二进程。
6.根据权利要求5所述的终端设备,其特征在于,所述保活条件包括以下至少一个:
所述第二进程的进程状态是预设类型;
所述第二进程的用户标识UID小于或等于预设值;
所述第二进程的进程名为预设名称;或者,
预设参数的参数值为真,所述预设参数表示所述第二进程为常驻进程。
7.根据权利要求5或6所述的终端设备,其特征在于,所述判断模块还用于:
判断所述第一应用与所述第二应用之间的对应关系是否在预设对应关系中;
所述处理模块还用于:
若所述第一应用与所述第二应用之间的对应关系不在预设对应关系中,则确定所述第一应用与所述第二应用不存在强依赖关系。
8.根据权利要求5至7中任一项所述的终端设备,其特征在于,所述判断模块还用于:
判断所述第一进程的UID和所述第二进程的UID是否相同;
所述处理模块还用于:
若所述第一进程的UID和所述第二进程的UID不同,则确定所述第一进程与所述第二进程不存在强依赖关系。
9.一种终端设备,其特征在于,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储计算机程序,当所述处理器调用所述计算机程序时,使得所述终端设备执行如权利要求1至4中任一项所述的方法。
10.一种芯片系统,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片系统的设备实现如权利要求1至4中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序包括用于实现如权利要求1至4中任一项所述的方法的指令。
12.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被运行时,使得计算机实现如权利要求1至4中任一项所述的方法的指令。
CN202210687952.XA 2022-06-17 2022-06-17 进程处理方法和终端设备 Active CN116088955B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210687952.XA CN116088955B (zh) 2022-06-17 2022-06-17 进程处理方法和终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210687952.XA CN116088955B (zh) 2022-06-17 2022-06-17 进程处理方法和终端设备

Publications (2)

Publication Number Publication Date
CN116088955A true CN116088955A (zh) 2023-05-09
CN116088955B CN116088955B (zh) 2024-04-02

Family

ID=86205149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210687952.XA Active CN116088955B (zh) 2022-06-17 2022-06-17 进程处理方法和终端设备

Country Status (1)

Country Link
CN (1) CN116088955B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189584A (zh) * 2018-07-05 2019-01-11 北京三快在线科技有限公司 应用程序之间的通信方法、装置、电子设备及存储介质
CN111367698A (zh) * 2018-12-26 2020-07-03 北京微播视界科技有限公司 应用程序闪退的检测及处理方法、装置及电子设备
CN111381943A (zh) * 2018-12-29 2020-07-07 深圳Tcl数字技术有限公司 一种应用程序闪退处理方法、智能终端及存储介质
CN113282458A (zh) * 2021-05-25 2021-08-20 挂号网(杭州)科技有限公司 应用程序的防闪退方法、装置、电子设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189584A (zh) * 2018-07-05 2019-01-11 北京三快在线科技有限公司 应用程序之间的通信方法、装置、电子设备及存储介质
CN111367698A (zh) * 2018-12-26 2020-07-03 北京微播视界科技有限公司 应用程序闪退的检测及处理方法、装置及电子设备
CN111381943A (zh) * 2018-12-29 2020-07-07 深圳Tcl数字技术有限公司 一种应用程序闪退处理方法、智能终端及存储介质
CN113282458A (zh) * 2021-05-25 2021-08-20 挂号网(杭州)科技有限公司 应用程序的防闪退方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN116088955B (zh) 2024-04-02

Similar Documents

Publication Publication Date Title
CN113434288B (zh) 内存管理的方法及电子设备
KR20150066083A (ko) 전자 장치의 멀티 태스킹 방법 및 그 전자 장치
CN111338910B (zh) 日志数据处理、显示方法、装置、设备及存储介质
CN113032766B (zh) 应用权限管理的方法和装置
CN113986092B (zh) 消息显示方法和装置
CN115655310B (zh) 数据的校准方法、电子设备及可读存储介质
WO2022253158A1 (zh) 一种用户隐私保护方法及装置
CN115016631B (zh) 进程调度方法和终端设备
CN111966491A (zh) 统计占用内存的方法及终端设备
CN114020379B (zh) 一种终端设备、信息反馈方法和存储介质
CN108132817B (zh) 对象管理方法及装置
CN114741256A (zh) 传感器监听方法、装置及终端设备
CN116088955B (zh) 进程处理方法和终端设备
WO2021052489A1 (zh) 一种确定多核处理器中故障计算核的方法及电子设备
WO2021238376A1 (zh) 功能包的加载方法、装置、服务器和电子设备
CN116450473A (zh) 踩内存问题的定位方法和电子设备
CN113642010B (zh) 一种获取扩展存储设备数据的方法及移动终端
CN113312249A (zh) 日志数据生成方法、日志数据显示方法及装置
CN113392120A (zh) 获取SQLite的执行信息的方法及装置
CN116095685B (zh) 关键信息的保护方法和终端设备
CN112286596A (zh) 消息显示方法及电子设备
CN116095230B (zh) 应用程序推荐方法和终端设备、可读存储介质
US20240231890A1 (en) Memory management method and electronic device
CN113268294B (zh) 界面设置的方法和装置
CN116450228A (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