一种高版本安卓应用保活的方法和系统与流程

文档序号:33710080发布日期:2023-03-31 23:22阅读:159来源:国知局
一种高版本安卓应用保活的方法和系统与流程

1.本发明涉及计算机技术领域,具体涉及一种高版本安卓应用保活的方法和系统。


背景技术:

2.由于android系统自身的机制,即低内存杀进程机制,在系统内存不足的情况下,lowmemorykiller会杀死不活动的进程,从而释放内存,保证前台应用的正常运行。进程一但被杀,那所有app的活动也就停止了。但是在某些特定的业务场景下,如外卖接单,需要进程一直或者,才能保证订单不丢单,因此需要一定的技术手段,来对抗系统的杀进程机制。
3.现有方案的拉活原理是通过提高binder通讯的速度,即把binder通讯从java层移到native层,是通过启动service来拉起进程,只能兼容到android9,在更高的安卓版本中,使用这类方法保活后台程序已经失效,因此,需要一种能提升android10及以上的安卓版本中应用后台存活率的应用保活方法。


技术实现要素:

4.为了解决高安卓版本程序后台无法保活的问题,本发明提供了一种高版本安卓应用保活的方法和系统。
5.具体的,本发明的技术方案如下:
6.第一方面,本发明公开了一种高版本安卓应用保活的方法,包括:
7.选择应用程序中的一个进程作为主要进程,将所述主要进程派生出奇数个保活进程后,启动所述保活进程;所述主要进程和每个所述保活进程分别作为一个父进程;
8.每个所述父进程利用创建进程函数,分别生成对应的子进程;
9.将所述父进程两两分组,且同一组的两个所述父进程和其对应的两个子进程组成一个进程组;
10.当监控到一进程组中的所述父进程或所述子进程出现进程被安卓系统删除,使用启动工具组件拉起全部所述父进程,每个所述父进程再次通过所述创建进程函数,生成所述对应的子进程。
11.本实施方式通过主要进程和多个保活进程构成若干进程组,若干进程组对主要进程形成严密的保护网络,进程被安卓系统删除时,启动工具组件则对所有父进程进行拉活,并利用创建进程函数重新生成子程序,替代了之前的启动service拉活的方法,解决了service拉活在高安卓版本不适用的问题。
12.在一些高版本安卓应用保活的方法的实施方式,在所述的当监控到一进程组中的所述父进程或所述子进程出现进程被安卓系统删除,使用启动工具组件拉起全部所述父进程之前,包括:
13.每个所述进程组内部的两个所述父进程之间互相监控是否出现进程被安卓系统删除;
14.或,每个所述进程组内部的两个所述子进程之间互相监控是否出现进程被安卓系
统删除。
15.本实施方式因父进程被杀会导致对应的子进程被杀,采用两个父进程互相监控,两个子进程互相监控,是横向互相监控,且父进程和子进程都能监控得出另一父进程被安卓系统删除,相比于父进程和对应的子进程互相监控,能够提升保活进程的成功率。
16.在一些高版本安卓应用保活的方法的实施方式,所述的每个所述进程组内部的两个所述父进程之间互相监控是否出现进程被安卓系统删除,包括:
17.每个所述进程组内部的两个所述父进程分别创建父进程加锁文件,对每个所述父进程加锁文件加排它锁;
18.每个所述父进程创建一个父进程判断文件;
19.当同一所述进程组内部的一父进程监控到另一父进程判断文件存在后,再判断所述另一父进程的父进程加锁文件能否加锁;
20.当所述另一父进程的父进程加锁文件能够加锁,则监控到所述另一父进程已经出现进程被安卓系统删除。
21.本实施方式提供了一种两个父进程互相监控,识别出其中一个父进程被安卓系统删除具体的实现步骤,能够准确的判断出父进程被安卓系统删除的结论。
22.在一些高版本安卓应用保活的方法的实施方式,在所述的再判断所述另一父进程的父进程加锁文件能否加锁之后,还包括:
23.当所述另一父进程的父进程加锁文件不能够加锁,则所述另一父进程没有出现进程被安卓系统删除。
24.本实施方式提供了一种两个父进程互相监控,判断没有父进程被安卓系统删除的具体的实现步骤。
25.在一些高版本安卓应用保活的方法的实施方式,所述的每个所述进程组内部的两个所述子进程之间互相监控是否出现进程被安卓系统删除,包括:
26.每个所述进程组内部的两个所述子进程分别创建子进程加锁文件,对每个所述子进程加锁文件加排它锁;
27.每个所述子进程创建一个子进程判断文件;
28.当同一所述进程组内部的一子进程监控到另一子进程判断文件存在后,再判断所述另一子进程的子进程加锁文件能否加锁;
29.当所述另一子进程的子进程加锁文件能够加锁,则监控到所述另一子进程已经出现进程被安卓系统删除。
30.本实施方式提供了一种两个子进程互相监控,识别出其中一个子进程被安卓系统删除具体的实现步骤,能够准确的判断出子进程被安卓系统删除的结论。
31.第二方面,本发明公开了一种高版本安卓应用保活的系统,其特征在于,包括:
32.父进程生成模块:用于选择应用程序中的一个进程作为主要进程,将所述主要进程派生出奇数个保活进程后,启动所述保活进程;所述主要进程和每个所述保活进程分别作为一个父进程;
33.子进程生成模块:用于每个所述父进程利用创建进程函数,分别生成对应的子进程;
34.分组模块:用于将所述父进程两两分组,且同一组的两个所述父进程和其对应的
两个子进程组成一个进程组;
35.监控判断模块:用于当监控到一进程组中的所述父进程或所述子进程出现进程被安卓系统删除,使用启动工具组件拉起全部所述父进程,每个所述父进程再次通过所述创建进程函数,生成所述对应的子进程。
36.本实施方式通过主要进程和多个保活进程构成若干进程组,若干进程组对主要进程形成严密的保护网络,进程被安卓系统删除时,启动工具组件则对所有父进程进行拉活,并利用创建进程函数重新生成子程序,替代了之前的启动service拉活的方法,解决了service拉活在高安卓版本不适用的问题。
37.在一些高版本安卓应用保活的系统的实施方式,所述监控判断模块,还用于每个所述进程组内部的两个所述父进程之间互相监控是否出现进程被安卓系统删除;或每个所述进程组内部的两个所述子进程之间互相监控是否出现进程被安卓系统删除。
38.本实施方式因父进程被杀会导致对应的子进程被杀,采用两个父进程互相监控,两个子进程互相监控,是横向互相监控,且父进程和子进程都能监控得出另一父进程被安卓系统删除,相比于父进程和对应的子进程互相监控,能够提升保活进程的成功率。
39.在一些高版本安卓应用保活的系统的实施方式,
40.所述监控判断模块,还包括文件生成控制子模块:用于每个所述进程组内部的两个所述父进程分别创建父进程加锁文件,对每个所述父进程加锁文件加排它锁;
41.所述文件生成控制子模块,还用于每个所述父进程创建一个父进程判断文件;
42.所述监控判断模块,还用于当同一所述进程组内部的一父进程监控到另一父进程判断文件存在后,再判断所述另一父进程的父进程加锁文件能否加锁;当所述另一父进程的父进程加锁文件能够加锁,则监控到所述另一父进程已经出现进程被安卓系统删除。
43.本实施方式提供了一种两个父进程互相监控,识别出其中一个父进程被安卓系统删除具体的实现步骤,能够准确的判断出父进程被安卓系统删除的结论。
44.在一些高版本安卓应用保活的系统的实施方式,
45.所述监控判断模块,还包括文件生成控制子模块:用于每个所述进程组内部的两个所述子进程分别创建子进程加锁文件,对每个所述子进程加锁文件加排它锁;
46.所述文件生成控制子模块,还用于每个所述子进程生成一个子进程判断文件;
47.所述监控判断模块,还用于当同一所述进程组内部的一子进程监控到另一子进程判断文件存在后,再判断所述另一子进程的子进程加锁文件能否加锁;当所述另一子进程的子进程加锁文件能够加锁,则监控到所述另一子进程已经出现进程被安卓系统删除。
48.本实施方式提供了一种两个子进程互相监控,识别出其中一个子进程被安卓系统删除具体的实现步骤,能够准确的判断出子进程被安卓系统删除的结论。
49.本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1至5中任一项所述的一种高版本安卓应用保活的方法。
50.与现有技术相比,本发明至少具有以下一项有益效果:
51.1、本发明通过主要进程、多个保活进程以及对应的子进程构成若干进程组,若干进程组对主要进程形成严密的保护网络,提升了保活进程的成功率;监控到有进程被安卓系统删除时,启动工具组件则对所有父进程进行拉活,并利用创建进程函数重新生成子程
序,替代了之前的启动service拉活的方法,解决了service拉活在高安卓版本不适用的问题。
52.2、本发明通过父进程与父进程监控,子进程与子进程监控的方式来监控进程是否被安卓系统删除,该方式是进程组内横向互相监控,父进程和子进程都能监控得出另一父进程被安卓系统删除,相比于父进程和对应的子进程互相监控,能够提升保活进程的成功率。
53.3、本发明通过多个进程组互相关联,任何一个进程组内的进程的启动,都会拉起其它进程组,提升了保活进程的成功率。
附图说明
54.下面将以明确易懂的方式,结合附图说明优选实施方式,对本发明的上述特性、技术特征、优点及其实现方式予以进一步说明。
55.图1是本发明的一种高版本安卓应用保活的方法的一个实施例的流程图;
56.图2是本发明的一种高版本安卓应用保活的方法的一个实施例的流程图;
57.图3是本发明的一种高版本安卓应用保活的方法的一个实施例的说明书附图;
58.图4是本发明的一种高版本安卓应用保活的方法的一个实施例的说明书附图;
59.图5是本发明的一种高版本安卓应用保活的系统的一个实施例的结构框图。
60.附图标号说明:10
‑‑
父进程生成模块;20
‑‑
子进程生成模块;21
‑‑
fork函数模块;30
‑‑
分组模块;40
‑‑
监控判断模块;41
‑‑
文件生成控制子模块。
具体实施方式
61.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
62.为使图面简洁,各图中只示意性地表示出了与发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
63.还应当进一步理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
64.在本文中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
65.另外,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
66.在一个实施例中,参考说明书附图1,本发明提供的一种高版本安卓应用保活的方
法,包括:
67.s101选择应用程序中的一个进程作为主要进程,将所述主要进程派生出奇数个保活进程后,启动所述保活进程;所述主要进程和每个所述保活进程分别作为一个父进程。
68.步骤s101中应用程序由包含主要进程的若干进程组成,进程数量由开发者决定,对后台的应用程序保活,只需要对主要进程保活即可,其他进程在被安卓系统清除后,可由主要进程按需拉起,因此本方案只需要对应用程序的主要进程保活,即可保障应用程序在后台不被清除。
69.进而本步骤由主要进程派生奇数个保活进程,作为监控进程被杀的一个重要组成部分,启动保活进程的方法可以是通过安卓四大组件中任意一个,安卓四大组件包括:活动(activity)、服务(service)、广播接受者(broadcast receive)和内容提供者(contentprovider),其中使用内容提供者(content provider)启动保活进程效果最好,因内容提供者(contentprovider)的声明周期执行函数最早,在进程初始化时使用内容提供者(contentprovider)能够快速启动保活进程。
70.s102每个所述父进程利用创建进程函数,分别生成对应的子进程。
71.步骤s102中,父进程生成子进程,子进程作为监控进程被杀的另一个重要组成部分。
72.s103将所述父进程两两分组,且同一组的两个所述父进程和其对应的两个子进程组成一个进程组。
73.步骤s103中,对进程进行分组,以便于同组的进程互相监控一个进程是否被安卓系统删除,减少判断次数,达到更加方便监控进程被杀的目的。
74.s104判断是否监控到一进程组中的所述父进程或所述子进程出现进程被安卓系统删除。
75.s105当监控到一进程组中的所述父进程或所述子进程出现进程被安卓系统删除,使用启动工具组件拉起全部所述父进程,每个所述父进程,并返回步骤s102,再次通过所述创建进程函数,生成所述对应的子进程。
76.步骤s105中,启动工具组件就是安卓系统中的startinstrumentation组件,安卓系统能够通过该启动工具组件实现在高安卓版本中拉起进程,并且本步骤中多个进程组互相关联,任何一个进程组内的进程的启动,都会拉起其它进程组,提升了保活进程的成功率。
77.本实施例通过主要进程、多个保活进程以及对应的子进程构成若干进程组,若干进程组对主要进程形成严密的保护网络,进程组中任意进程被杀,都会重新启动主要进程和所有保活进程,提升了保活进程的成功率;当监控到有进程被安卓系统删除时,启动工具组件则对所有父进程进行拉活,替代了现有的拉活被安卓系统删除的进程的方法,并利用创建进程函数重新生成对应的子程序。在现有的拉活被安卓系统删除的进程的方法,如在对比文件cn105335171b-应用程序常驻操作系统后台的方法及装置和对比文件cn114490549a-一种安卓应用进程守护方法和系统,都是通过androidapi跨进成通讯,底层都使用binder通讯(安卓系统提供的一种多进程通讯机制),对比文件的进程拉活的原理是提高binder通讯的速度,即把binder通讯从java层移到native层,对比文件的这些方法都在android10和android11已经失效,而本实施例通过启动工具组件拉活,在android10和
android11可以实现被安卓系统删除的进程拉活,解决了现有拉活程序技术在高安卓版本不适用的问题。
78.本实施例在前一个实施例的基础上,提供了一种高版本安卓应用保活的方法,在所述的当监控到一进程组中的所述父进程或所述子进程出现进程被安卓系统删除,使用启动工具组件拉起全部所述父进程之前,包括:
79.每个所述进程组内部的两个所述父进程之间互相监控是否出现进程被安卓系统删除;
80.每个所述进程组内部的两个所述子进程之间互相监控是否出现进程被安卓系统删除。
81.本实施例提供了一个较优的监控对象选择的方案,因在安卓系统中父进程被杀会导致对应的子进程被杀,采用两个父进程互相监控,两个子进程互相监控,是进程组中横向互相监控,如果一个父进程被安卓系统删除,其对应的子进程也被安卓系统删除,另一父进程能够监控得到父进程已经被安卓系统删除,另一子进程也能监控得到子进程已经被安卓系统删除,另一父进程和另一子进程都可以拉起所有其他父进程。本实施例也可以选择父进程和对应的子进程进行进程组内纵向互相监控,对此不做限制,但由于父进程被安卓系统删除只能通过该父进程对应的子进程判断,本实施例的采用的两个父进程互相监控与两个子进程互相监控,能够提升主要进程保活的成功率。
82.本实施例在前一个实施例的基础上,参考说明书附图2,提供了一种高版本安卓应用保活的方法,所述的每个所述进程组内部的两个所述父进程之间互相监控是否出现进程被安卓系统删除,包括:
83.s201每个所述进程组内部的两个所述父进程分别创建父进程加锁文件,对每个所述父进程加锁文件加排它锁。
84.步骤s201中,排它锁又称写锁,排它锁的作用是将文件加上排它锁后,无法对该文件加其它锁。
85.s202每个所述父进程创建一个父进程判断文件。
86.s203判断同一所述进程组内部的一父进程监控到另一父进程判断文件是否存在,当不存在,则持续监控,直到监控到另一父进程判断文件,进入步骤s204。
87.步骤s202和步骤s203中,父进程判断文件用于另一父进程判断是否父进程已经对父进程加锁文件加锁,避免了父进程刚启动,还未来得及对父进程加锁文件加锁,具体的,另一父进程在执行完步骤s201之后直接进入步骤s204,会导致误判父进程加锁文件没有锁,是由于父进程已经被安卓系统删除,而忽视了父进程刚刚启动这种情况,误拉起另一父进程以外的所有其他父进程。
88.s204判断所述另一父进程的父进程加锁文件能否加锁,当未能加锁,则另一父进程没有被安卓系统删除,持续对父进程加锁文件加锁,直到监控到另一父进程的父进程加锁文件能够加锁,进入步骤s205。
89.步骤s204中,由于父进程加锁文件已经加上排它锁,不可再被加锁,因此,另一父进程发现父进程加锁文件在已被父进程加锁的情况下,可以被另一父进程二次加锁的唯一条件是父进程被杀死,该步骤将父进程加锁文件能否二次加锁作为另一父进程监控父进程是否被安卓系统删除的判断依据。
90.s205当所述另一父进程的父进程加锁文件能够加锁,则监控到所述另一父进程已经出现进程被安卓系统删除。
91.本实施例提供了一种同一组内两个父进程互相监控对方是否被安卓系统删除的方法,该方法通过创建父进程加锁文件、创建父进程判断文件以及对文件增加排他锁来提供一个循环判断父进程是否被安卓系统删除的判断逻辑,将s201-s205的方法步骤中的父进程替换为子进程,父进程判断文件替换为子进程判断文件,父进程加锁文件替换为子进程加锁文件,即可实现子进程互相监控,也可使用该监控方法原理实现父进程监控对应的子进程等其他监控方法,对此不做限制。
92.本实施例在上述实施例的基础上,提供了一种高版本安卓应用保活的方法,所述每个所述父进程利用创建进程函数,分别生成对应的子进程,包括:
93.所述每个所述父进程利用执行两次的fork函数生成子进程。
94.本实施例通过执行两次的fork函数生成子进程隐藏了父进程和子进程之间的关系。
95.在一个实施例中,参考说明书附图3和说明书附图4,提供了一种高版本安卓应用保活的方法,包括步骤:
96.用户启动a进程;
97.a进程通过contentprovider启动b进程;
98.a进程和b进程通过说明书附图4所示的原理感知对方是否被安卓系统删除;
99.a进程fork,生成子进程a.c,b进程fork,生成子进程b.c;
100.a.c和b.c通过说明书附图4所示的原理感知对方是否被安卓系统删除,将说明书附图4中a替换成a.c,b替换为b.c即可实现a.c和b.c的子进程间感知对方是否被安卓系统删除;
101.将a,b称作一级进程,a.c,b.c称作二级进程,4个进程作为一个进程组;
102.在一个进程组中,子进程被杀,会被另一个子进程感知,然后通过启动工具组件重新创建被杀子进程对应的主进程,然后拉起子进程;主进程被杀,会被另一个主进程感知,从而通过启动工具组件重新拉起被杀主进程,进而达到保活效果;
103.本实施例中一共有5个进程组,每个一级进程的启动,都会检查并启动其它9个主进程,进一步启动主进程对应的子进程。
104.在一个实施例中,参考说明书附图5,提供了一种高版本安卓应用保活的系统,包括:
105.父进程生成模块10:用于选择应用程序中的一个进程作为主要进程,将所述主要进程派生出奇数个保活进程后,启动所述保活进程;所述主要进程和每个所述保活进程分别作为一个父进程;
106.子进程生成模块20:用于每个所述父进程利用创建进程函数,分别生成对应的子进程;
107.分组模块30:用于将所述父进程两两分组,且同一组的两个所述父进程和其对应的两个子进程组成一个进程组;
108.监控判断模块40:用于当监控到一进程组中的所述父进程或所述子进程出现进程被安卓系统删除,使用启动工具组件拉起全部所述父进程,每个所述父进程再次通过所述
创建进程函数,生成所述对应的子进程。
109.本实施例在前一个实施例的基础上,提供了一种高版本安卓应用保活的系统,所述监控判断模块40,还用于每个所述进程组内部的两个所述父进程之间互相监控是否出现进程被安卓系统删除;或每个所述进程组内部的两个所述子进程之间互相监控是否出现进程被安卓系统删除。
110.本实施例在前一个实施例的基础上,提供了一种高版本安卓应用保活的系统,
111.所述监控判断模块40,还包括文件生成控制子模块41:用于每个所述进程组内部的两个所述父进程分别创建父进程加锁文件,对每个所述父进程加锁文件加排它锁;
112.所述文件生成控制子模块41,还用于每个所述父进程创建一个父进程判断文件;
113.所述监控判断模块40,还用于当同一所述进程组内部的一父进程监控到另一父进程判断文件存在后,再判断所述另一父进程的父进程加锁文件能否加锁;当所述另一父进程的父进程加锁文件能够加锁,则监控到所述另一父进程已经出现进程被安卓系统删除。
114.本实施例在前述实施例的基础上,提供了一种高版本安卓应用保活的系统,
115.所述监控判断模块40,还包括文件生成控制子模块41:用于每个所述进程组内部的两个所述子进程分别创建子进程加锁文件,对每个所述子进程加锁文件加排它锁;
116.所述文件生成控制子模块41,还用于每个所述子进程创建一个子进程判断文件;
117.所述监控判断模块40,还用于当同一所述进程组内部的一子进程监控到另一子进程判断文件存在后,再判断所述另一子进程的子进程加锁文件能否加锁;当所述另一子进程的子进程加锁文件能够加锁,则监控到所述另一子进程已经出现进程被安卓系统删除。
118.本实施例在前述实施例的基础上,提供了一种高版本安卓应用保活的系统,
119.所述子进程生成模块20,还包括fork函数模块21,用于所述每个所述父进程利用执行两次的fork函数生成子进程。
120.需要说明的是,本发明提供的一种高版本安卓应用保活的系统的实施例与前述提供的一种高版本安卓应用保活的方法的实施例均基于同一发明构思,能够取得相同的技术效果。因而,一种高版本安卓应用保活的系统的实施例的其它具体内容可以参照前述一种高版本安卓应用保活的方法的实施例内容的记载。
121.在本发明的一个实施例中,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时可实现如前述实施例记载的一种高版本安卓应用保活方法。也即是,当前述本发明实施例对现有技术做出贡献的技术方案的部分或全部通过计算机软件产品的方式得以体现时,前述计算机软件产品存储在一个计算机可读存储介质中。所述计算机可读存储介质可以为任意可携带计算机程序代码实体装置或设备。譬如,所述计算机可读存储介质可以是u盘、移动磁盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器等。
122.应当说明的是,上述实施例均可根据需要自由组合。以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1