CN105335171A - 应用程序常驻操作***后台的方法及装置 - Google Patents

应用程序常驻操作***后台的方法及装置 Download PDF

Info

Publication number
CN105335171A
CN105335171A CN201410287640.5A CN201410287640A CN105335171A CN 105335171 A CN105335171 A CN 105335171A CN 201410287640 A CN201410287640 A CN 201410287640A CN 105335171 A CN105335171 A CN 105335171A
Authority
CN
China
Prior art keywords
keep
host
alive
alive process
operating system
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
CN201410287640.5A
Other languages
English (en)
Other versions
CN105335171B (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.)
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201410287640.5A priority Critical patent/CN105335171B/zh
Priority to PCT/CN2015/082075 priority patent/WO2015196967A1/zh
Publication of CN105335171A publication Critical patent/CN105335171A/zh
Application granted granted Critical
Publication of CN105335171B publication Critical patent/CN105335171B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Telephonic Communication Services (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种应用程序常驻操作***后台的方法及装置。该方法包括:接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;所述主进程调用函数创建宿主保活进程;宿主保活进程调用函数创建保活进程,并在保活进程创建后,将所述保活进程托管给操作***;构建主进程与保活进程连接,触发所述主进程与保活进程基于构建的连接进行相互监听;在监听到主进程或保活进程被关闭后,启动被关闭的进程。应用本发明,可以实现应用程序长驻留在操作***后台。

Description

应用程序常驻操作***后台的方法及装置
技术领域
本发明涉及应用程序通信技术,具体涉及一种应用程序常驻操作***后台的方法及装置。
背景技术
随着互联网的普及,用户对网络通信服务的依耐性越来越强,对网络通信服务***的稳定性、响应能力以及不间断(zero-downtime)的服务特性也有了越来越高的要求。通信设备作为承载网络通信服务的载体,通过安装操作***,并基于安装的操作***安装应用程序(App,Application),从而为用户提供便捷的互联网服务。
以安卓(Android)操作***为例,Android操作***是一种应用于移动通信设备的操作***,由***提供源码给各大厂商定制,应用程序是安装在Android上的可执行程序。在目前Android操作***环境下,一些第三方App由于任务运行的需要,需要常驻在操作***后台,例如,对于即时通讯类应用程序,需要实时从服务器更新最新消息,以保证正常服务。再例如,对于电子市场类应用程序,需要在后台监控通信设备中其他应用程序的安装、卸载情况,以上传通信设备中应用程序的安装、卸载数据,从而对用户的喜好行为特征进行分析。再例如,对于定位服务(LBS,LocationBasedServices)类应用程序,需要监控通信设备的地理位置信息,以实现运营商广告的精确投放。因此,如何实现第三方App常驻操作***后台成为迫切需要解决的技术问题。
现有技术中,由于Android操作***允许第三方开发者开发的***级应用程序驻留操作***后台(简称后台),因而,通过获取通信设备上操作***的根(Root)权限,修改操作***中/system/build.prop文件的配置信息,可以实现第三方App在操作***后台常驻,即利用操作***配置文件的漏洞,从而实现后台常驻,具体流程如下:
首先,获取操作***Root权限;接着,修改操作***下的/system/build.prop文件的配置信息,在该build.prop文件的配置信息中加入sys.keep_App_1=xxx.xxx.xxx,其中,xxx.xxx.xxx是第三方App包名;然后,重启动通信设备后生效,并通过分叉函数(fork)构建针对该第三方App的父进程以及与父进程直接相关联的子进程。这样,由于在操作***下的/system/build.prop文件的配置信息加入了第三方App相关信息,使得操作***可以对该第三方App构建的父进程以及子进程进行管理和控制,在第三方App退出操作***后,第三方App对应的父进程和子进程仍可驻留于后台,从而实现第三方App常驻操作***后台。
但上述应用程序常驻操作***后台的方法,首先,需要通信设备具有Root功能,但据不完全统计,目前Root的比率大致为20%,应用受到限制,适用性不广;其次,Android操作***设置有任务管理器,用于记录应用程序对应的父进程以及与父进程直接相关联的子进程占用的内存资源等信息,由于基于Android操作***中的进程是托管给操作***的,因而,在操作***后台运行的应用程序较多、占用大量内存资源导致操作***内存资源不足,需要进行***清理的情况下,由于通过获取操作***Root权限构建的第三方App对应的父进程以及子进程由操作***进行管理和控制,通过查询任务管理器,依据预先设置的规则,例如,按照内存资源占用量或应用程序优先级关闭(kill)一些应用程序对应的父进程以及与父进程直接相关联的子进程,从而终止该运用程序的运行,并能回收该运用程序占用的内存资源以保证操作***的正常运行,导致驻留于后台的第三方App对应的父进程以及关联的子进程可能***作***清除掉以释放内存资源;或者,通信设备中安装的杀毒软件进行查杀毒的过程中,第三方App对应的父进程以及与父进程直接相关联的子进程也可能会被清除掉。在第三方App被清除掉的情况下,只有通过重新启动通信设备,并运行该第三方App,才能重新将第三方App置于后台运行方式。
由上述可见,现有应用程序常驻操作***后台的方法,由于驻留于后台的应用程序在操作***内存资源不足时或在查杀毒的过程中被清除掉,不能实现第三方App常驻(例如24小时)操作***后台,使得应用程序常驻后台的可靠性较低,从而给用户的正常通信业务带来不便,并影响用户通信业务的正常进行,降低了用户的通信业务体验。而通过通信设备的重启动加载应用程序以重新启动被关掉的进程驻留后台,不仅操作流程较为繁琐,实现应用程序驻留后台所需时间较长,更会导致整个通信设备通信的中断,对用户的通信业务体验影响更大。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用程序常驻操作***后台的方法及装置。
依据本发明的一个方面,提供了应用程序常驻操作***后台的方法,该方法包括:
接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;
所述主进程调用函数创建宿主保活进程;
宿主保活进程调用函数创建保活进程,并在保活进程创建后,将所述保活进程托管给操作***;
构建主进程与保活进程连接,触发所述主进程与保活进程基于构建的连接进行相互监听;
在监听到主进程或保活进程被关闭后,启动被关闭的进程。
优选地,所述操作***包括但不限于安卓操作***、Linux操作***、塞班操作***。
优选地,所述目标应用程序存储在预先设置的启动列表中,在通信设备每次启动后,自动触发向操作***发起目标应用程序启动请求,操作***根据接收的目标应用程序启动请求,获取预先设置的启动列表,自动加载启动列表中的应用程序,并为启动列表中的各应用程序分配相应的主进程。
优选地,所述宿主保活进程将自身置于关闭状态,以使所述保活进程托管给操作***。
优选地,所述将自身置于关闭状态包括:
主进程在创建宿主保活进程时,为创建的所述宿主保活进程设置生命周期,在设置的生命周期结束后,所述宿主保活进程自然关闭。
优选地,所述将自身置于关闭状态包括:
宿主保活进程在接收到保活进程创建成功信息后,将自身的生命周期置零。
优选地,所述构建主进程与保活进程连接包括:
主进程创建服务端套接字,保活进程创建客户端套接字;
绑定服务端套接字地址,并通过服务端套接字监听客户端套接字;
等待客户端套接字连接;
客户端套接字与服务端套接字建立套接字连接。
优选地,所述客户端套接字与服务端套接字建立套接字连接包括:
主进程通过服务端套接字创建保活进程宿主对象,并为所述保活进程宿主对象分配对应的保活进程标识;
主进程使用创建的保活进程宿主对象启动保活进程,并向所述保活进程发送复活指令,所述复活指令携带所述保活进程标识、主进程通信接口句柄;
保活进程启动并接收来自主进程的复活指令;
所述保活进程通过客户端套接字创建对应的保活进程对象,并初始化所述保活进程对象;
所述保活进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述保活进程对象对应的保活进程通信接口句柄、保活进程标识;
主进程收到保活进程的启动应答消息后,根据所述启动应答消息中的保活进程标识确定对应的保活进程宿主对象,并为所述保活进程宿主对象设置对应的保活进程通信接口句柄。
优选地,所述在建立套接字连接后,所述方法进一步包括:
所述主进程通过主进程通信接口句柄接收来自保活进程的数据,并通过保活进程宿主对象的保活进程通信接口句柄向对应的保活进程发送数据;
所述保活进程通过保活进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
优选地,所述监听到主进程或保活进程被关闭包括:
第一进程被关闭,处于关闭状态;
第一进程端对应的监听组件获取该第一进程处于关闭状态,将第一进程的状态参数标识设置为0;
通过套接字连接的第二进程读取第一进程的状态参数标识;
第二进程确定第一进程的状态参数标识为0,确定对方进程被关闭。
优选地,所述监听到主进程或保活进程被关闭包括:
主进程和保活进程使用套接字连接互相监听,确定虚拟套接字连接断开,确定主进程或保活进程被关闭。
优选地,所述在监听到主进程或保活进程被关闭后,启动被关闭的进程包括:
主进程监听到保活进程被关闭,调用复活指令启动保活进程。
优选地,所述在监听到主进程或保活进程被关闭后,启动被关闭的进程包括:
保活进程监听到主进程被关闭,调用复活指令启动主进程并触发启动的主进程执行所述调用函数创建宿主保活进程的流程,并在主进程启动成功后将自身置于关闭状态。
优选地,所述保活进程在非安卓生命周期内启动主进程,并使用am指令在linux-C进程启动主进程。
优选地,所述函数为分叉函数。
优选地,所述主进程与所述宿主保活进程为父子进程关系,所述宿主保活进程与所述保活进程为父子进程关系。
优选地,通过未被关闭的所述保活进程或所述主进程启动所述被关闭的进程。
根据本发明的另一个方面提供了一种应用程序常驻操作***后台的装置,该装置包括:主进程创建模块、宿主保活进程创建模块、保活进程创建模块、连接模块以及监听处理模块,其中,
主进程创建模块,用于接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;
宿主保活进程创建模块,用于触发主进程调用函数创建宿主保活进程;
保活进程创建模块,用于触发宿主保活进程调用函数创建保活进程,并在保活进程创建后,将所述保活进程托管给操作***;
连接模块,用于构建主进程与保活进程连接,触发所述主进程与保活进程基于构建的连接进行相互监听;
监听处理模块,用于在监听到主进程或保活进程被关闭后,启动被关闭的进程。
优选地,所述保活进程创建模块包括:保活进程创建单元、生命周期设置单元以及生命周期运行单元,其中,
保活进程创建单元,用于触发宿主保活进程调用函数创建保活进程;
生命周期设置单元,用于为创建的所述宿主保活进程设置生命周期;
生命周期运行单元,用于运行设置的生命周期,在设置的生命周期结束后,触发所述宿主保活进程自然关闭。
优选地,所述连接模块包括:连接预处理单元、连接单元以及监听单元,其中,
连接预处理单元,用于触发主进程创建服务端套接字,保活进程创建客户端套接字;使主进程绑定服务端套接字地址,并通过服务端套接字监听客户端套接字;等待客户端套接字连接;
连接单元,用于触发客户端套接字与服务端套接字建立套接字连接;
监听单元,触发所述主进程与保活进程基于构建的连接进行相互监听。
优选地,所述连接单元包括:保活进程宿主对象创建子单元、启动子单元、保活进程启动子单元、初始化子单元、应答子单元以及应答处理子单元,其中,
保活进程宿主对象创建子单元,用于触发主进程通过服务端套接字创建保活进程宿主对象,并为所述保活进程宿主对象分配对应的保活进程标识;
启动子单元,用于触发主进程使用创建的保活进程宿主对象启动保活进程,并向所述保活进程发送复活指令,所述复活指令携带所述保活进程标识、主进程通信接口句柄;
保活进程启动子单元,用于触发保活进程启动并接收来自主进程的复活指令;
初始化子单元,用于触发所述保活进程通过客户端套接字创建对应的保活进程对象,并初始化所述保活进程对象;
应答子单元,用于触发所述保活进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述保活进程对象对应的保活进程通信接口句柄、保活进程标识;
应答处理子单元,用于触发主进程收到保活进程的启动应答消息后,根据所述启动应答消息中的保活进程标识确定对应的保活进程宿主对象,并为所述保活进程宿主对象设置对应的保活进程通信接口句柄。
优选地,所述连接单元进一步包括:数据传输子单元,用于触发所述主进程通过主进程通信接口句柄接收来自保活进程的数据,并通过保活进程宿主对象的保活进程通信接口句柄向对应的保活进程发送数据;所述保活进程通过保活进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
优选地,所述监听处理模块包括:状态参数标识设置单元、状态参数标识读取单元、状态参数标识确定单元以及进程重启动单元,其中,
状态参数标识设置单元,用于在第一进程被关闭,处于关闭状态后,第一进程端对应的监听组件获取该第一进程处于关闭状态,将第一进程的状态参数标识设置为关闭状态;
状态参数标识读取单元,用于通过套接字连接的第二进程读取第一进程的状态参数标识;
状态参数标识确定单元,用于在第二进程确定第一进程的状态参数标识为关闭状态,确定第一进程被关闭;
进程重启动单元,用于启动被关闭的第一进程。
根据本发明的应用程序常驻操作***后台的方法及装置,在操作***为应用程序创建主进程后,主进程再通过调用分叉函数fork()创建宿主保活进程,设置宿主保活进程再通过调用分叉函数fork()创建保活进程,并在保活进程创建成功后,结束自身的生命周期。由此通过两级进程分离用户进程,在宿主保活进程被关闭后,使得同一应用程序对应的主进程与保活进程之间不存在直接关联关系,解决了操作***或杀毒软件依据直接关联关系进行查杀导致应用程序不能常驻后台的技术问题,取得了通过未被关闭的进程来启动关闭的进程,从而使得应用程序仍可以驻留在后台,可以很好地满足必须要7x24h后台运行的应用程序的业务需求、提升应用程序常驻后台的可靠性的有益效果;进一步地,该方法不管在Root还是非Root的通信设备上都能使用;而且,无需等待通信设备重启动重新加载配置文件以使得进程常驻,操作流程较为简单,实现应用程序驻留后台所需时间短,不影响通信设备通信,提升了用户的通信业务体验。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例应用程序常驻操作***后台的方法流程;
图2示出了本发明实施例应用程序常驻操作***后台的方法具体流程;以及,
图3示出了本发明实施例应用程序常驻操作***后台的装置结构。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
现有通过获取操作***根权限,然后修改操作***中/system/build.prop文件的配置信息,使得基于fork函数构建的父进程和与父进程直接相关联的子进程托管于操作***实现应用程序常驻后台的方法,在应用程序退出前台后,前台运行的父进程以及后台运行的与父进程直接关联的子进程仍可处于激活状态,但驻留于后台的应用程序在操作***内存资源不足时或在查杀毒的过程中,处于激活状态的父进程以及与父进程直接关联的子进程可能被清除掉,不能实现第三方App常驻(例如24小时)操作***后台;而通过通信设备的重启动加载应用程序以重新启动被关掉的进程驻留后台,不仅操作流程较为繁琐,实现应用程序驻留后台所需时间较长,更会导致整个通信设备通信的中断。
由于应用程序通过fork函数创建父进程以及与父进程直接关联的子进程,可以实现应用程序常驻操作***后台,如果能在应用程序对应的两进程中的一进程在***作***或杀毒软件关闭后,能够通过另一进程及时地启动关闭的进程,这样,可以确保关闭进程在操作***后台的及时复活,使得进程对应的应用程序可以恢复并驻留在后台。但由于现有为应用程序创建的父进程以及子进程之间存在直接关联关系,因而,在任务管理器释放内存资源时,会将父进程以及存在直接关联关系的子进程占用的资源一同释放,从而使得父进程以及子进程同时被关闭,使得不存在应用程序对应的两进程中的一进程***作***或杀毒软件关闭的情形。
分叉函数fork()源于操作***(OS,OperationSystem)中多线程任务的需要,应用程序在前台启动后,操作***首先为该应用程序分配进程,并通过操作***调用,创建一个与原进程(父进程)几乎完全相同的进程(子进程)。其中,两个进程可以执行完全相同的功能,也可以执行不同的功能。当父进程调用fork()函数后,操作***先给新的进程(子进程)分配资源,例如存储数据和代码的空间;然后将原进程的所有资源都复制到新的新进程中,当然,在完成fork之后也可以自行修改被复制的资源。这样,在fork函数执行完毕后,出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。因而,在应用程序退出后,子进程可以驻留在后台。
本发明实施例中,考虑操作***通过调用分叉函数fork()为父进程创建子进程后,再通过调用分叉函数fork()为子进程创建下级子进程。这样,父进程与下级子进程之间不存在直接关联关系,在子进程被关闭后,则下级子进程成为孤儿进程,从而会被托管给操作***进程,而由于下级子进程与子进程都对应同一应用程序,因而,后续使用中,在***内存资源不足或杀毒软件在查杀毒过程中,由于父进程与下级子进程不存在直接关联关系,因而,在任务管理器依据关联关系进行进程关闭处理时,两个进程***作***同时清除或被杀毒软件同时查杀的概率较低,这样,可以通过未被关闭的进程来启动关闭的进程,从而使得父进程与下级子进程可以驻留在后台,从而保障应用程序在后台持续运行,可以很好地满足必须要7x24h后台运行的(第三方)应用程序的业务需求。相比采用Root的技术方案,本发明实施例不管在Root还是非Root的通信设备上都能使用,基本不受杀毒软件(杀软)影响,而且功耗很低。
图1示出了本发明实施例应用程序常驻操作***后台的方法流程。参见图1,该流程包括:
步骤101,接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;
本步骤中,目标应用程序为需要常驻操作***后台的应用程序,例如,即时通讯类应用程序、电子市场类应用程序以及定位服务类应用程序等,其中,即时通讯类应用程序可以是QQ、微信、微博等。
本发明实施例中,作为可选实施例,由操作***接收目标应用程序启动请求,操作***包括但不限于安卓操作***、Linux操作***、塞班操作***等。
本发明实施例中,操作***后台是指前台应用程序在关闭后,驻留在操作***中所处的位置为操作***后台。
实际应用中,可以预先将需要常驻操作***后台的应用程序设置为通信设备开机启动的启动列表中。即所述目标应用程序存储在预先设置的启动列表中。这样,在通信设备每次启动后,自动触发向操作***发起目标应用程序启动请求,操作***根据接收的目标应用程序启动请求,获取预先设置的启动列表,自动加载启动列表中的应用程序,并为启动列表中的各应用程序分配相应的主进程。
当然,作为可选实施例,也可以是由用户在启动通信设备后,点击需要启动的常驻操作***后台的应用程序,触发向操作***发起目标应用程序启动请求。这样,用户可以根据自身实际需要,选取需要常驻操作***后台的一个或多个应用程序。
本发明实施例中,为目标应用程序创建主进程的流程为公知技术,在此略去详述。
步骤102,所述主进程调用函数创建宿主保活进程;
本步骤中,作为可选实施例,函数为分叉函数。对于主进程和宿主保活进程,主进程对应父进程,宿主保活进程对应子进程。
本发明实施例中,父进程调用fork函数产生子进程,子进程具有与父进程相同的资源。
步骤103,宿主保活进程调用分叉函数创建保活进程,并在保活进程创建后,将所述保活进程托管给操作***;
本步骤中,宿主保活进程调用分叉函数创建保活进程的流程与主进程调用分叉函数创建宿主保活进程的流程相同,在此略去详述。
本发明实施例中,对于宿主保活进程和保活进程,宿主保活进程对应父进程,保活进程对应子进程。
在主进程、宿主保活进程以及保活进程中,设置有状态参数标识,例如,当状态参数标识为1时,表示进程处于正常状态;当状态参数标识为0时,表示进程处于关闭状态。也就是说,如果进程处于关闭状态,则该进程对应的状态参数标识被自动设置为0。这样,后续应用中,对端进程通过读取该进程对应的状态参数标识,使得所述对端进程在生命周期内能够主动地,及时知道该端进程是否存活或被关闭。当然,实际应用中,也可以设置当状态参数标识为0时,表示进程处于正常状态;当状态参数标识为1时,表示进程处于关闭状态。
本发明实施例中,以Linux操作***为例,在Linux操作***上,当宿主保活进程被关闭,保活进程变成孤儿进程,同时,变为孤儿进程的保活进程会被托管给最早fork出来的进程,即操作***进程。这样,通过两级进程分离用户进程,可以使得主进程与保活进程之间不存在直接关联关系,从而可以有效防止任务管理器或杀毒软件依据直接关联关系对进程进行查杀时,避免主进程与保活进程都被查杀。也就是说,例如,任务管理器或杀毒软件在查杀到主进程并需要清除主进程时,依据存储的该主进程的直接关联关系,查询到宿主保活进程,但由于该宿主保活进程已被关闭,因而,将主进程关闭以释放内存资源,在后续保活进程没有被查杀到的情况下,未被查杀到的保活进程可以复活被查杀的主进程,使得主进程和保活进程对应的应用程序仍可驻留于操作***后台。
作为可选实施例,所述宿主保活进程将自身置于关闭状态,以使所述保活进程托管给操作***。
其中,将自身置于关闭状态包括:
主进程在创建宿主保活进程时,为创建的所述宿主保活进程设置生命周期,在设置的生命周期结束后,所述宿主保活进程自然关闭。
本步骤中,主进程在为创建的所述宿主保活进程设置生命周期时,考虑后续宿主保活进程创建保活进程所需的时间,使得设置的生命周期大于或等于宿主保活进程创建保活进程所需的时间即可。
作为另一可选实施例,将自身置于关闭状态也可以包括:
宿主保活进程在接收到保活进程创建成功信息后,将自身的生命周期置零。
本步骤中,主进程在为创建的所述宿主保活进程设置生命周期时,默认为操作***设置的最大值,即默认生命周期为无限长,宿主保活进程创建保活进程,保活进程在创建成功后,向宿主保活进程返回创建成功信息。因而,可以设置宿主保活进程在接收到保活进程创建成功信息后,将自身的生命周期置零,以使宿主保活进程自然死亡。
步骤104,构建主进程与保活进程连接,触发所述主进程与保活进程基于构建的连接进行相互监听;
本步骤中,作为可选实施例,构建主进程与保活进程连接包括:
A11,主进程创建服务端套接字(LocalServerSocket),保活进程创建客户端套接字(LocalSocket);
本步骤中,在基于多个传输控制协议(TCP,TransmissionControlProtocol)进行连接或存在多个应用程序进程的情况下,可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,计算机操作***为应用程序与传输控制协议/网际协议(TCP/IP,TransferControlProtocol/InternetProtocol)交互提供了称为套接字(Socket)的接口。其中,套接字用于区分不同应用程序进程间的网络通信和连接,是支持TCP/IP协议的网络通信的基本操作单元,是不同主机之间的进程进行双向通信的端点,也就是说,通信的两方可以通过套接字中的相关函数来完成通信过程。
本发明实施例中,主进程与保活进程采用客户端/服务端(C/S,Client/Service)模式进行通信。主进程创建服务器端Unix域套接字,即LocalServerSocket作为服务端使用,建立socket监听客户端请求,保活进程创建客户端套接字(LocalSocket),客户端套接字运行在保活进程中。
本发明实施例中,以创建服务端套接字为例,采用文件描述符创建已经存在的服务端套接字,例如,在init.rc中指定服务端套接字资源地址dev/socket/……,创建作为服务端的套接字,程序代码段如下:
LocalServerSocketsocket=newLocalServerSocket(createFileDescriptor(fileDesc))。
作为可选实施例,本发明实施例中,基于TCP/IP协议的套接字类型可以包括:流套接字(SOCK_STREAM)、数据报套接字(SOCK_DGRAM)以及原始套接字(SOCK_RAW)。关于套接字类型为公知技术,在此略去详述。
套接字内容包括:通信的目的IP地址、使用的传输层协议,例如,TCP协议或用户数据报协议(UDP,UserDatagramProtocol),以及使用的端口号。
A12,绑定服务端套接字地址,并通过服务端套接字监听客户端套接字;
本步骤中,服务端套接字不定位具体的客户端套接字,而是处于等待连接的状态,并实时监控网络状态。
绑定服务端套接字地址,并通过服务端套接字监听客户端套接字的程序段代码可以如下:
//绑定地址
localAddress=newLocalSocketAddress(name);
impl.bind(localAddress);
//监听
impl.listen(LISTEN_BACKLOG);
A13,等待客户端套接字连接;
本步骤中,客户端设置连接地址,并建立连接。具体来说,保活进程的客户端套接字发送连接请求,携带通信目的IP地址,该通信目的IP地址为服务器端套接字。也就是说,客户端套接字首先描述需要连接的服务器套接字,写入服务器套接字的地址和端口号,然后再向服务器端套接字发送连接请求。
设置连接地址的程序代码段可以如下:
LocalSocketAddressaddress=newLocalSocketAddress("installd",LocalSocketAddress.Namespace.RESERVED);
/建立连接
mSocket.connect(address);
A14,客户端套接字与服务端套接字建立套接字连接。
本步骤中,当服务器端套接字监听或接收到客户端套接字发送的连接请求后,响应客户端套接字的请求,建立一个新的线程,并将服务器端套接字的信息发送给客户端套接字对应的保活进程,保活进程确认该套接字连接。具体来说,该步骤包括:
A01,主进程通过服务端套接字创建保活进程宿主对象,并为所述保活进程宿主对象分配对应的保活进程标识;
本步骤中,主进程创建并管理保活进程宿主对象,每个保活进程宿主对象对应一个保活进程,并拥有与所对应保活进程相同的保活进程标识。
A02,主进程使用创建的保活进程宿主对象启动保活进程,并向所述保活进程发送复活指令,所述复活指令携带所述保活进程标识、主进程通信接口句柄;
本步骤中,保活进程宿主对象中提供了创建和启动保活进程的方法,并提供数据通信接口用于向保活进程发送复活指令。具体来说,主进程以命令行的方式通过调用保活进程宿主对象提供的进程创建方法创建一个新的保活进程,所述命令行包括所述复活指令。
A03,保活进程启动并接收来自主进程的复活指令;
A04,所述保活进程通过客户端套接字创建对应的保活进程对象,并初始化所述保活进程对象;
本步骤中,在初始化过程中,保活进程对接收到的复活指令中携带的保活进程标识、主进程通信接口句柄等命令行参数进行保存。
A05,所述保活进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述保活进程对象对应的保活进程通信接口句柄、保活进程标识;
本步骤中,完成初始化后,保活进程对象使用进程间通信(IPC,Inter-ProcessCommunication)向主进程发送启动应答消息。
A06,主进程收到保活进程的启动应答消息后,根据所述启动应答消息中的保活进程标识确定对应的保活进程宿主对象,并为所述保活进程宿主对象设置对应的保活进程通信接口句柄。
这样,主进程中的保活进程宿主对象就拥有了与其对应的保活进程对象的保活进程通信接口句柄,而保活进程也获得了对应主进程的通信接口句柄。基于获得的保活进程通信接口句柄,保活进程宿主对象对外提供与对应的保活进程对象进行进程间通信的通信接口,使得主进程能够通过调用所述通信接口向对应的保活进程发送数据。
在建立套接字连接后,主进程与保活进程都处于监听状态,监听对方的状态。
进一步地,在建立套接字连接后,该方法还可以进一步包括:
A15,主进程和保活进程建立通信通道进行数据传输。
该步骤可以具体包括:
所述主进程通过主进程通信接口句柄接收来自保活进程的数据,并通过保活进程宿主对象的保活进程通信接口句柄向对应的保活进程发送数据;
所述保活进程通过保活进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
步骤105,在监听到主进程或保活进程被关闭后,启动被关闭的进程。
本步骤中,主进程和保活进程互为对方进程,也就是在监听到对方进程被关闭后,启动被关闭的进程。
作为可选实施例,监听到对方进程被关闭包括:
B11,第一进程被关闭,处于关闭状态;
本步骤中,第一进程既可以是主进程,也可以是保活进程。进程被关闭,可能是由于操作***在内存资源不足时,需要释放内存资源而将该进程关闭;也可能是杀毒软件在查杀毒过程中,查杀该进程而将该进程关闭;还可能是其它情形下关闭进程。
B12,第一进程端对应的监听组件获取该第一进程处于关闭状态,将第一进程的状态参数标识设置为0;
B13,通过套接字连接的第二进程读取第一进程的状态参数标识;
本步骤中,如果第一进程为主进程,则第二进程为保活进程;如果第一进程为保活进程,则第二进程为主进程。
B14,第二进程确定第一进程的状态参数标识为0,确定对方进程被关闭。
作为另一可选实施例,监听到对方进程被关闭包括:
主进程和保活进程使用套接字连接互相监听,确定虚拟套接字连接断开,确定对方进程被关闭。
本发明实施例中,采用套接字连接进行互相监听,功耗小且稳定,不易出错。
较佳地,操作***或杀毒软件关闭进程后,进一步释放所述关闭进程的所有资源,从而使得操作***可自动回收该关闭进程占用的内存、CPU等***资源。
作为可选实施例,在监听到对方进程被关闭后,启动关闭的进程可以包括:
主进程监听到保活进程被关闭,调用复活指令启动保活进程。
作为另一可选实施例,在监听到对方进程被关闭后,启动关闭的进程还可以包括:
保活进程监听到主进程被关闭,调用复活指令启动主进程并触发启动的主进程执行所述调用分叉函数创建宿主保活进程的流程,并在主进程启动成功后将自身置于关闭状态。
本步骤中,为避免复活的主进程通过创建宿主保活进程,并传入复活指令创建保活进程,使得操作***存在冗余的保活进程,从而占用不必要的操作***内存。因而,当保活进程启动主进程后,结束自身的生命周期,退出操作***后台。
较佳地,保活进程在非Android生命周期内启动主进程,并使用am指令在linux-C进程启动主进程,从而恢复Android的服务,使得应用程序可以驻留在操作***后台。
图2示出了本发明实施例应用程序常驻操作***后台的方法具体流程。参见图2,以主进程被关闭为例,该流程包括:
步骤201,主进程启动后,调用fork函数创建宿主保活进程,并向创建的宿主保活进程传入复活指令,指示启动保活进程;
步骤202,宿主保活进程接收传入的复活指令,调用fork函数创建保活进程;
本步骤中,通过调用操作***中的fork函数中的fork指令,复制出保活进程,从而创建出保活进程。
步骤203,宿主保活进程生命周期结束,自然死亡;
本步骤中,在生命周期结束后,宿主保活进程关闭自己。
步骤204,主进程创建LocalServerSocket并等待连接;
步骤205,保活进程连接到主进程,并互相监听;
本步骤,保活进程与主进程监听对方的状态,即读取对方的状态参数标识。
步骤206,保活进程监听到主进程被杀死(关闭),调用复活指令复活主进程;
本步骤中,保活进程监听到与主进程的连接断开,则调用复活指令复活主进程,返回执行步骤201。
步骤207,保活进程生命周期结束,自然死亡。
本步骤中,当保活进程的生命周期结束时,退出操作***后台,以避免复活的主进程通过创建宿主保活进程,并传入复活指令创建保活进程,使得操作***存在冗余的保活进程,从而占用不必要的操作***内存。
本发明实施例中,操作***为应用程序创建主进程后,主进程再通过调用分叉函数fork()创建宿主保活进程,宿主保活进程再通过调用分叉函数fork()创建保活进程,并在保活进程创建成功后,结束自身的生命周期。这样,通过两级进程分离用户进程,在宿主保活进程被关闭后,则保活进程成为孤儿进程,从而会被托管给操作***进程,并使得主进程与保活进程之间不存在直接关联关系。因而,后续应用中,在主进程和保活进程中的一个进程被关闭的情况下,由于主进程与保活进程不存在直接关联关系,使得依据直接关联关系进行查杀的另一个进程被同时关闭的概率较低,这样,可以通过未被关闭的进程来启动关闭的进程,从而使得应用程序仍可以驻留在后台,可以很好地满足必须要7x24h后台运行的应用程序的业务需求。相比采用Root(即获得超级管理员权限)的技术方案,本发明实施例的方法不管在Root还是非Root的通信设备上都能使用,适用范围广,而且功耗很低,从而以较低的代价实现第三方应用程序常驻后台运行,对于那些必须常驻后台的软硬结合的应用尤其重要,使得应用程序常驻后台的可靠性高;进一步地,由于主进程没有退出,所有资源均没有变化,产生的保活进程继承主进程的资源,可以确保保活进程资源不变,从而确保应用程序可靠运行;而且,在应用程序对应的一进程被关闭时,可以通过该应用程序对应的另一进程即时复活,无需通过通信设备的重启动加载应用程序以重新启动被关掉的进程驻留后台,不仅操作流程较为简单,实现应用程序驻留后台所需时间短,更不会导致整个通信设备通信的中断,有效提升了用户的通信业务体验。
图3示出了本发明实施例应用程序常驻操作***后台的装置结构。参见图3,该装置为通信设备,包括:主进程创建模块、宿主保活进程创建模块、保活进程创建模块、连接模块以及监听处理模块,其中,
主进程创建模块,用于接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;
本发明实施例中,操作***接收目标应用程序启动请求,并创建主进程,包括但不限于安卓操作***、Linux操作***、塞班操作***等。
作为可选实施例,将目标应用程序存储在预先设置的启动列表中。这样,在通信设备每次启动后,自动触发向操作***发起目标应用程序启动请求,操作***根据接收的目标应用程序启动请求,获取预先设置的启动列表,自动加载启动列表中的应用程序,并为启动列表中的各应用程序分配相应的主进程。
宿主保活进程创建模块,用于触发主进程调用函数创建宿主保活进程;
本发明实施例中,函数为分叉函数。
保活进程创建模块,用于触发宿主保活进程调用函数创建保活进程,并在保活进程创建后,将所述保活进程托管给操作***;
本发明实施例中,主进程、宿主保活进程以及保活进程设置有用于表示进程是否处于关闭状态的状态参数标识。
作为可选实施例,保活进程创建模块包括:保活进程创建单元、生命周期设置单元以及生命周期运行单元(图中未示出),其中,
保活进程创建单元,用于触发宿主保活进程调用分叉函数创建保活进程;
生命周期设置单元,用于为创建的所述宿主保活进程设置生命周期;
生命周期运行单元,用于运行设置的生命周期,在设置的生命周期结束后,触发所述宿主保活进程自然死亡。
本发明实施例中,主进程在为创建的所述宿主保活进程设置生命周期时,考虑后续宿主保活进程创建保活进程所需的时间,使得设置的生命周期大于或等于宿主保活进程创建保活进程所需的时间即可。
连接模块,用于构建主进程与保活进程连接,触发所述主进程与保活进程基于构建的连接进行相互监听;
作为可选实施例,连接模块包括:连接预处理单元、连接单元以及监听单元(图中未示出),其中,
连接预处理单元,用于触发主进程创建服务端套接字,保活进程创建客户端套接字;使主进程绑定服务端套接字地址,并通过服务端套接字监听客户端套接字;等待客户端套接字连接;
连接单元,用于触发客户端套接字与服务端套接字建立套接字连接;
本发明实施例中,连接单元包括:保活进程宿主对象创建子单元、启动子单元、保活进程启动子单元、初始化子单元、应答子单元以及应答处理子单元,其中,
保活进程宿主对象创建子单元,用于触发主进程通过服务端套接字创建保活进程宿主对象,并为所述保活进程宿主对象分配对应的保活进程标识;
启动子单元,用于触发主进程使用创建的保活进程宿主对象启动保活进程,并向所述保活进程发送复活指令,所述复活指令携带所述保活进程标识、主进程通信接口句柄;
保活进程启动子单元,用于触发保活进程启动并接收来自主进程的复活指令;
初始化子单元,用于触发所述保活进程通过客户端套接字创建对应的保活进程对象,并初始化所述保活进程对象;
应答子单元,用于触发所述保活进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述保活进程对象对应的保活进程通信接口句柄、保活进程标识;
应答处理子单元,用于触发主进程收到保活进程的启动应答消息后,根据所述启动应答消息中的保活进程标识确定对应的保活进程宿主对象,并为所述保活进程宿主对象设置对应的保活进程通信接口句柄。
作为可选实施例,连接单元还可以进一步包括:
数据传输子单元,用于触发所述主进程通过主进程通信接口句柄接收来自保活进程的数据,并通过保活进程宿主对象的保活进程通信接口句柄向对应的保活进程发送数据;所述保活进程通过保活进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
监听单元,用于触发所述主进程与保活进程基于构建的连接进行相互监听。
监听处理模块,用于在监听到对方进程被关闭后,启动关闭的进程。
本发明实施例中,监听处理模块包括:状态参数标识设置单元、状态参数标识读取单元、状态参数标识确定单元以及进程重启动单元(图中未示出),其中,
状态参数标识设置单元,用于在第一进程被关闭,处于关闭状态后,第一进程端对应的监听组件获取该第一进程处于关闭状态,将第一进程的状态参数标识设置为关闭状态;
本发明实施例中,第一进程既可以是主进程,也可以是保活进程。进程被关闭,可能是由于操作***在内存资源不足时,需要释放内存资源而将该进程关闭;也可能是杀毒软件在查杀毒过程中,查杀该进程而将该进程关闭;还可能是其它情形下关闭进程。
状态参数标识读取单元,用于通过套接字连接的第二进程读取第一进程的状态参数标识;
本发明实施例中,如果第一进程为主进程,则第二进程为保活进程;如果第一进程为保活进程,则第二进程为主进程。
状态参数标识确定单元,用于在第二进程确定第一进程的状态参数标识为关闭状态,确定第一进程被关闭;
进程重启动单元,用于启动第一进程。
本发明实施例中,主进程监听到保活进程被关闭,调用复活指令启动保活进程;或者,
保活进程监听到主进程被关闭,调用复活指令启动主进程并触发启动的主进程执行所述调用分叉函数创建宿主保活进程的流程,并在主进程启动成功后将自身置于关闭状态。
较佳地,保活进程在非Android生命周期内启动主进程,并使用am指令在linux-C进程启动主进程,从而恢复Android的服务,使得应用程序可以驻留在操作***后台。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的应用程序常驻操作***后台的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站服务器上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1.一种应用程序常驻操作***后台的方法,包括:
接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;
所述主进程调用函数创建宿主保活进程;
宿主保活进程调用函数创建保活进程,并在保活进程创建后,将所述保活进程托管给操作***;
构建主进程与保活进程连接,触发所述主进程与保活进程基于构建的连接进行相互监听;
在监听到主进程或保活进程被关闭后,启动被关闭的进程。
A2.根据A1所述的方法,所述操作***包括但不限于安卓操作***、Linux操作***、塞班操作***。
A3.根据A1所述的方法,所述目标应用程序存储在预先设置的启动列表中,在通信设备每次启动后,自动触发向操作***发起目标应用程序启动请求,操作***根据接收的目标应用程序启动请求,获取预先设置的启动列表,自动加载启动列表中的应用程序,并为启动列表中的各应用程序分配相应的主进程。
A4.根据A1所述的方法,所述宿主保活进程将自身置于关闭状态,以使所述保活进程托管给操作***。
A5.根据A4所述的方法,所述将自身置于关闭状态包括:
主进程在创建宿主保活进程时,为创建的所述宿主保活进程设置生命周期,在设置的生命周期结束后,所述宿主保活进程自然关闭。
A6.根据A4所述的方法,所述将自身置于关闭状态包括:
宿主保活进程在接收到保活进程创建成功信息后,将自身的生命周期置零。
A7.根据A1所述的方法,所述构建主进程与保活进程连接包括:
主进程创建服务端套接字,保活进程创建客户端套接字;
绑定服务端套接字地址,并通过服务端套接字监听客户端套接字;
等待客户端套接字连接;
客户端套接字与服务端套接字建立套接字连接。
A8.根据A7所述的方法,所述客户端套接字与服务端套接字建立套接字连接包括:
主进程通过服务端套接字创建保活进程宿主对象,并为所述保活进程宿主对象分配对应的保活进程标识;
主进程使用创建的保活进程宿主对象启动保活进程,并向所述保活进程发送复活指令,所述复活指令携带所述保活进程标识、主进程通信接口句柄;
保活进程启动并接收来自主进程的复活指令;
所述保活进程通过客户端套接字创建对应的保活进程对象,并初始化所述保活进程对象;
所述保活进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述保活进程对象对应的保活进程通信接口句柄、保活进程标识;
主进程收到保活进程的启动应答消息后,根据所述启动应答消息中的保活进程标识确定对应的保活进程宿主对象,并为所述保活进程宿主对象设置对应的保活进程通信接口句柄。
A9.根据A8所述的方法,所述在建立套接字连接后,所述方法进一步包括:
所述主进程通过主进程通信接口句柄接收来自保活进程的数据,并通过保活进程宿主对象的保活进程通信接口句柄向对应的保活进程发送数据;
所述保活进程通过保活进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
A10.根据A1所述的方法,所述监听到主进程或保活进程被关闭包括:
第一进程被关闭,处于关闭状态;
第一进程端对应的监听组件获取该第一进程处于关闭状态,将第一进程的状态参数标识设置为0;
通过套接字连接的第二进程读取第一进程的状态参数标识;
第二进程确定第一进程的状态参数标识为0,确定对方进程被关闭。
A11.根据A1所述的方法,所述监听到主进程或保活进程被关闭包括:
主进程和保活进程使用套接字连接互相监听,确定虚拟套接字连接断开,确定主进程或保活进程被关闭。
A12.根据A1所述的方法,所述在监听到主进程或保活进程被关闭后,启动被关闭的进程包括:
主进程监听到保活进程被关闭,调用复活指令启动保活进程。
A13.根据A1所述的方法,所述在监听到主进程或保活进程被关闭后,启动被关闭的进程包括:
保活进程监听到主进程被关闭,调用复活指令启动主进程并触发启动的主进程执行所述调用函数创建宿主保活进程的流程,并在主进程启动成功后将自身置于关闭状态。
A14.根据A12或13所述的方法,所述保活进程在非安卓生命周期内启动主进程,并使用am指令在linux-C进程启动主进程。
A15.根据A1所述的方法,所述函数为分叉函数。
A16.根据A1所述的方法,所述主进程与所述宿主保活进程为父子进程关系,所述宿主保活进程与所述保活进程为父子进程关系。
A17.根据A1所述的方法,通过未被关闭的所述保活进程或所述主进程启动所述被关闭的进程。
A18.一种应用程序常驻操作***后台的装置,该装置包括:主进程创建模块、宿主保活进程创建模块、保活进程创建模块、连接模块以及监听处理模块,其中,
主进程创建模块,用于接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;
宿主保活进程创建模块,用于触发主进程调用函数创建宿主保活进程;
保活进程创建模块,用于触发宿主保活进程调用函数创建保活进程,并在保活进程创建后,将所述保活进程托管给操作***;
连接模块,用于构建主进程与保活进程连接,触发所述主进程与保活进程基于构建的连接进行相互监听;
监听处理模块,用于在监听到主进程或保活进程被关闭后,启动被关闭的进程。
A19.根据A18所述的装置,所述保活进程创建模块包括:保活进程创建单元、生命周期设置单元以及生命周期运行单元,其中,
保活进程创建单元,用于触发宿主保活进程调用函数创建保活进程;
生命周期设置单元,用于为创建的所述宿主保活进程设置生命周期;
生命周期运行单元,用于运行设置的生命周期,在设置的生命周期结束后,触发所述宿主保活进程自然关闭。
A20.根据A18所述的装置,所述连接模块包括:连接预处理单元、连接单元以及监听单元,其中,
连接预处理单元,用于触发主进程创建服务端套接字,保活进程创建客户端套接字;使主进程绑定服务端套接字地址,并通过服务端套接字监听客户端套接字;等待客户端套接字连接;
连接单元,用于触发客户端套接字与服务端套接字建立套接字连接;
监听单元,触发所述主进程与保活进程基于构建的连接进行相互监听。
A21.根据A20所述的装置,所述连接单元包括:保活进程宿主对象创建子单元、启动子单元、保活进程启动子单元、初始化子单元、应答子单元以及应答处理子单元,其中,
保活进程宿主对象创建子单元,用于触发主进程通过服务端套接字创建保活进程宿主对象,并为所述保活进程宿主对象分配对应的保活进程标识;
启动子单元,用于触发主进程使用创建的保活进程宿主对象启动保活进程,并向所述保活进程发送复活指令,所述复活指令携带所述保活进程标识、主进程通信接口句柄;
保活进程启动子单元,用于触发保活进程启动并接收来自主进程的复活指令;
初始化子单元,用于触发所述保活进程通过客户端套接字创建对应的保活进程对象,并初始化所述保活进程对象;
应答子单元,用于触发所述保活进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述保活进程对象对应的保活进程通信接口句柄、保活进程标识;
应答处理子单元,用于触发主进程收到保活进程的启动应答消息后,根据所述启动应答消息中的保活进程标识确定对应的保活进程宿主对象,并为所述保活进程宿主对象设置对应的保活进程通信接口句柄。
A22.根据A21所述的装置,所述连接单元进一步包括:数据传输子单元,用于触发所述主进程通过主进程通信接口句柄接收来自保活进程的数据,并通过保活进程宿主对象的保活进程通信接口句柄向对应的保活进程发送数据;所述保活进程通过保活进程通信接口句柄接收来自主进程的数据,并通过主进程通信接口句柄向主进程发送数据。
A23.根据A18所述的装置,所述监听处理模块包括:状态参数标识设置单元、状态参数标识读取单元、状态参数标识确定单元以及进程重启动单元,其中,
状态参数标识设置单元,用于在第一进程被关闭,处于关闭状态后,第一进程端对应的监听组件获取该第一进程处于关闭状态,将第一进程的状态参数标识设置为关闭状态;
状态参数标识读取单元,用于通过套接字连接的第二进程读取第一进程的状态参数标识;
状态参数标识确定单元,用于在第二进程确定第一进程的状态参数标识为关闭状态,确定第一进程被关闭;
进程重启动单元,用于启动被关闭的第一进程。

Claims (10)

1.一种应用程序常驻操作***后台的方法,包括:
接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;
所述主进程调用函数创建宿主保活进程;
宿主保活进程调用函数创建保活进程,并在保活进程创建后,将所述保活进程托管给操作***;
构建主进程与保活进程连接,触发所述主进程与保活进程基于构建的连接进行相互监听;
在监听到主进程或保活进程被关闭后,启动被关闭的进程。
2.如权利要求1所述的方法,所述操作***包括但不限于安卓操作***、Linux操作***、塞班操作***。
3.如权利要求1所述的方法,所述目标应用程序存储在预先设置的启动列表中,在通信设备每次启动后,自动触发向操作***发起目标应用程序启动请求,操作***根据接收的目标应用程序启动请求,获取预先设置的启动列表,自动加载启动列表中的应用程序,并为启动列表中的各应用程序分配相应的主进程。
4.如权利要求1所述的方法,所述宿主保活进程将自身置于关闭状态,以使所述保活进程托管给操作***。
5.如权利要求4所述的方法,所述将自身置于关闭状态包括:
主进程在创建宿主保活进程时,为创建的所述宿主保活进程设置生命周期,在设置的生命周期结束后,所述宿主保活进程自然关闭。
6.如权利要求4所述的方法,所述将自身置于关闭状态包括:
宿主保活进程在接收到保活进程创建成功信息后,将自身的生命周期置零。
7.如权利要求1所述的方法,所述构建主进程与保活进程连接包括:
主进程创建服务端套接字,保活进程创建客户端套接字;
绑定服务端套接字地址,并通过服务端套接字监听客户端套接字;
等待客户端套接字连接;
客户端套接字与服务端套接字建立套接字连接。
8.如权利要求7所述的方法,所述客户端套接字与服务端套接字建立套接字连接包括:
主进程通过服务端套接字创建保活进程宿主对象,并为所述保活进程宿主对象分配对应的保活进程标识;
主进程使用创建的保活进程宿主对象启动保活进程,并向所述保活进程发送复活指令,所述复活指令携带所述保活进程标识、主进程通信接口句柄;
保活进程启动并接收来自主进程的复活指令;
所述保活进程通过客户端套接字创建对应的保活进程对象,并初始化所述保活进程对象;
所述保活进程对象向所述主进程发送启动应答消息,所述启动应答消息携带所述保活进程对象对应的保活进程通信接口句柄、保活进程标识;
主进程收到保活进程的启动应答消息后,根据所述启动应答消息中的保活进程标识确定对应的保活进程宿主对象,并为所述保活进程宿主对象设置对应的保活进程通信接口句柄。
9.一种应用程序常驻操作***后台的装置,该装置包括:主进程创建模块、宿主保活进程创建模块、保活进程创建模块、连接模块以及监听处理模块,其中,
主进程创建模块,用于接收目标应用程序启动请求,为该目标应用程序启动请求对应的目标应用程序创建主进程;
宿主保活进程创建模块,用于触发主进程调用函数创建宿主保活进程;
保活进程创建模块,用于触发宿主保活进程调用函数创建保活进程,并在保活进程创建后,将所述保活进程托管给操作***;
连接模块,用于构建主进程与保活进程连接,触发所述主进程与保活进程基于构建的连接进行相互监听;
监听处理模块,用于在监听到主进程或保活进程被关闭后,启动被关闭的进程。
10.如权利要求9所述的装置,所述保活进程创建模块包括:保活进程创建单元、生命周期设置单元以及生命周期运行单元,其中,
保活进程创建单元,用于触发宿主保活进程调用函数创建保活进程;
生命周期设置单元,用于为创建的所述宿主保活进程设置生命周期;
生命周期运行单元,用于运行设置的生命周期,在设置的生命周期结束后,触发所述宿主保活进程自然关闭。
CN201410287640.5A 2014-06-24 2014-06-24 应用程序常驻操作***后台的方法及装置 Expired - Fee Related CN105335171B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410287640.5A CN105335171B (zh) 2014-06-24 2014-06-24 应用程序常驻操作***后台的方法及装置
PCT/CN2015/082075 WO2015196967A1 (zh) 2014-06-24 2015-06-23 应用程序常驻操作***后台的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410287640.5A CN105335171B (zh) 2014-06-24 2014-06-24 应用程序常驻操作***后台的方法及装置

Publications (2)

Publication Number Publication Date
CN105335171A true CN105335171A (zh) 2016-02-17
CN105335171B CN105335171B (zh) 2019-05-10

Family

ID=54936799

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410287640.5A Expired - Fee Related CN105335171B (zh) 2014-06-24 2014-06-24 应用程序常驻操作***后台的方法及装置

Country Status (2)

Country Link
CN (1) CN105335171B (zh)
WO (1) WO2015196967A1 (zh)

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105930215A (zh) * 2016-04-07 2016-09-07 珠海市魅族科技有限公司 一种移动终端的控制方法及控制装置
CN106201690A (zh) * 2016-07-07 2016-12-07 乐视控股(北京)有限公司 应用运行控制方法及装置
CN106371911A (zh) * 2016-09-06 2017-02-01 北京海誉动想科技股份有限公司 守护进程重启被守护进程的方法
CN106648863A (zh) * 2016-12-08 2017-05-10 武汉斗鱼网络科技有限公司 一种安卓应用安装包、应用目标进程保活方法及***
CN106775642A (zh) * 2016-11-24 2017-05-31 广州赛意信息科技股份有限公司 一种移动应用的无限后台定位方法及***
CN106775652A (zh) * 2016-11-24 2017-05-31 武汉斗鱼网络科技有限公司 对终端的应用程序进行唤醒的方法及装置
CN107342981A (zh) * 2017-06-07 2017-11-10 北京小鸟看看科技有限公司 传感器数据的传输方法及装置、虚拟现实头戴设备
CN107341052A (zh) * 2017-06-07 2017-11-10 努比亚技术有限公司 一种消息处理方法及装置
CN107391199A (zh) * 2017-07-27 2017-11-24 珠海市魅族科技有限公司 应用启动方法及装置、终端和计算机可读存储介质
CN107729128A (zh) * 2017-07-24 2018-02-23 上海壹账通金融科技有限公司 应用程序数据恢复方法、装置、计算机设备和存储介质
CN108153620A (zh) * 2017-12-27 2018-06-12 深圳豪客互联网有限公司 一种进程控制方法及装置
CN108287761A (zh) * 2017-08-09 2018-07-17 珠海市魅族科技有限公司 内存回收方法及装置、终端设备及计算机可读存储介质
CN109240809A (zh) * 2017-07-11 2019-01-18 阿里巴巴集团控股有限公司 进程维护管理方法、容器维护方法、装置和操作***
CN109669838A (zh) * 2018-11-14 2019-04-23 百度在线网络技术(北京)有限公司 实现应用常驻的方法、装置、计算机设备及存储介质
CN109683974A (zh) * 2018-12-26 2019-04-26 北京金山安全软件有限公司 针对移动终端中应用后台服务进程的唤醒方法及相关设备
CN109992310A (zh) * 2019-03-12 2019-07-09 中国平安财产保险股份有限公司 应用程序保活方法、装置、计算机设备和存储介质
CN111399924A (zh) * 2020-03-18 2020-07-10 山东车微联信息技术股份有限公司 一种安卓平台下应用进程保活的方法、终端及存储介质
CN111538541A (zh) * 2019-12-06 2020-08-14 杭州当虹科技股份有限公司 一种让Android App长期稳定后台运行的方法
CN111782347A (zh) * 2019-04-03 2020-10-16 安克创新科技股份有限公司 手机应用保活方法、装置、***及存储介质
CN112162783A (zh) * 2020-09-27 2021-01-01 珠海格力电器股份有限公司 音乐播放应用保活处理方法、***、存储介质及电子设备
CN112860408A (zh) * 2021-03-03 2021-05-28 苏州沁游网络科技有限公司 一种云真机中的进程保活方法、装置、***及存储介质
CN113377543A (zh) * 2021-06-28 2021-09-10 上海商汤科技开发有限公司 任务处理***、电子设备和存储介质
WO2022042237A1 (zh) * 2020-08-31 2022-03-03 华为技术有限公司 加速应用启动的方法、电子设备及计算机存储介质
CN114697377A (zh) * 2022-04-07 2022-07-01 深信服科技股份有限公司 一种客户端产品的保活方法、***、装置及可读存储介质
CN114816546A (zh) * 2022-04-28 2022-07-29 合肥高维数据技术有限公司 客户端应用程序多重保活方法及***
WO2023109310A1 (zh) * 2021-12-13 2023-06-22 北京有竹居网络技术有限公司 进程管理方法、装置、存储介质以及电子设备

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11424931B2 (en) 2016-01-27 2022-08-23 Blackberry Limited Trusted execution environment
US10599409B2 (en) * 2016-02-02 2020-03-24 Blackberry Limited Application lifecycle operation queueing
CN106055365B (zh) * 2016-05-31 2019-10-25 Oppo广东移动通信有限公司 一种应用程序关闭方法和装置
CN112445530B (zh) * 2019-08-29 2023-03-14 成都鼎桥通信技术有限公司 第三方应用程序保活方法及设备
CN110688319B (zh) * 2019-09-30 2023-05-02 RealMe重庆移动通信有限公司 应用保活能力测试方法及相关装置
CN110879726B (zh) * 2019-10-24 2023-09-26 深圳数位大数据科技有限公司 移动终端应用程序的保活方法及装置
CN112612589A (zh) * 2020-12-26 2021-04-06 吉林亿联银行股份有限公司 一种应用程序的保活方法及装置
CN115113946A (zh) * 2021-03-17 2022-09-27 广东小天才科技有限公司 一种优化相机启动方法和装置
CN113741994B (zh) * 2021-06-26 2022-07-12 荣耀终端有限公司 一种视频应用的保活方法以及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140019980A1 (en) * 2012-07-10 2014-01-16 Sap Ag Thread Scheduling and Control Framework
CN103577224A (zh) * 2013-10-21 2014-02-12 杭州魔品科技有限公司 一种提高pc端检测安卓手机端守护程序升级的方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011040849A1 (en) * 2009-10-01 2011-04-07 Telefonaktiebolaget L M Ericsson (Publ) A method and arrangement for managing persistent rich internet applications
US9104476B2 (en) * 2010-04-07 2015-08-11 Apple Inc. Opportunistic multitasking of VOIP applications
CN103324536A (zh) * 2012-03-23 2013-09-25 宇龙计算机通信科技(深圳)有限公司 终端和应用程序保护方法
US9092247B2 (en) * 2012-03-29 2015-07-28 Microsoft Technology Licensing, Llc Persistent and resilient worker processes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140019980A1 (en) * 2012-07-10 2014-01-16 Sap Ag Thread Scheduling and Control Framework
CN103577224A (zh) * 2013-10-21 2014-02-12 杭州魔品科技有限公司 一种提高pc端检测安卓手机端守护程序升级的方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSDN: "python写的linux平台双护进程", 《HTTP://BLOG.CSDN.NET/LIANGYUANNAO/ARTICLE/DETAILS/9672665》 *
JUPITERWANGQ: "Android实现双进程守护", 《HTTP://BLOG.CSDN.NET/ZTEMT_SW2/ARTICLE/DETAILS/27101681》 *
NOAHGIFT 等: "《PYTHON UNIX和LINUX***管理指南》", 30 September 2009, 机械工业出版社 *
ROVAHOMOIMI: "6种进程防杀方案和源码", 《HTTPS://WWW.XUEBUYUAN.COM/839976.HTML》 *

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105930215A (zh) * 2016-04-07 2016-09-07 珠海市魅族科技有限公司 一种移动终端的控制方法及控制装置
CN106201690A (zh) * 2016-07-07 2016-12-07 乐视控股(北京)有限公司 应用运行控制方法及装置
CN106371911A (zh) * 2016-09-06 2017-02-01 北京海誉动想科技股份有限公司 守护进程重启被守护进程的方法
CN106775642B (zh) * 2016-11-24 2018-03-13 广州赛意信息科技股份有限公司 一种移动应用的无限后台定位方法及***
CN106775642A (zh) * 2016-11-24 2017-05-31 广州赛意信息科技股份有限公司 一种移动应用的无限后台定位方法及***
CN106775652A (zh) * 2016-11-24 2017-05-31 武汉斗鱼网络科技有限公司 对终端的应用程序进行唤醒的方法及装置
WO2018094908A1 (zh) * 2016-11-24 2018-05-31 武汉斗鱼网络科技有限公司 对终端的应用程序进行唤醒的方法及装置
CN106648863A (zh) * 2016-12-08 2017-05-10 武汉斗鱼网络科技有限公司 一种安卓应用安装包、应用目标进程保活方法及***
CN106648863B (zh) * 2016-12-08 2020-01-03 武汉斗鱼网络科技有限公司 一种安卓应用安装包、应用目标进程保活方法及***
CN107342981A (zh) * 2017-06-07 2017-11-10 北京小鸟看看科技有限公司 传感器数据的传输方法及装置、虚拟现实头戴设备
CN107341052A (zh) * 2017-06-07 2017-11-10 努比亚技术有限公司 一种消息处理方法及装置
CN109240809A (zh) * 2017-07-11 2019-01-18 阿里巴巴集团控股有限公司 进程维护管理方法、容器维护方法、装置和操作***
CN107729128A (zh) * 2017-07-24 2018-02-23 上海壹账通金融科技有限公司 应用程序数据恢复方法、装置、计算机设备和存储介质
CN107729128B (zh) * 2017-07-24 2019-09-24 深圳壹账通智能科技有限公司 应用程序数据恢复方法、装置、计算机设备和存储介质
CN107391199A (zh) * 2017-07-27 2017-11-24 珠海市魅族科技有限公司 应用启动方法及装置、终端和计算机可读存储介质
CN108287761A (zh) * 2017-08-09 2018-07-17 珠海市魅族科技有限公司 内存回收方法及装置、终端设备及计算机可读存储介质
CN108287761B (zh) * 2017-08-09 2020-11-06 珠海市魅族科技有限公司 内存回收方法及装置、终端设备及计算机可读存储介质
CN108153620A (zh) * 2017-12-27 2018-06-12 深圳豪客互联网有限公司 一种进程控制方法及装置
CN109669838A (zh) * 2018-11-14 2019-04-23 百度在线网络技术(北京)有限公司 实现应用常驻的方法、装置、计算机设备及存储介质
CN109683974A (zh) * 2018-12-26 2019-04-26 北京金山安全软件有限公司 针对移动终端中应用后台服务进程的唤醒方法及相关设备
CN109683974B (zh) * 2018-12-26 2022-05-31 北京金山安全软件有限公司 针对移动终端中应用后台服务进程的唤醒方法及相关设备
CN109992310A (zh) * 2019-03-12 2019-07-09 中国平安财产保险股份有限公司 应用程序保活方法、装置、计算机设备和存储介质
CN109992310B (zh) * 2019-03-12 2024-04-05 中国平安财产保险股份有限公司 应用程序保活方法、装置、计算机设备和存储介质
CN111782347A (zh) * 2019-04-03 2020-10-16 安克创新科技股份有限公司 手机应用保活方法、装置、***及存储介质
CN111538541A (zh) * 2019-12-06 2020-08-14 杭州当虹科技股份有限公司 一种让Android App长期稳定后台运行的方法
CN111399924B (zh) * 2020-03-18 2023-06-16 山东车微联信息技术股份有限公司 一种安卓平台下应用进程保活的方法、终端及存储介质
CN111399924A (zh) * 2020-03-18 2020-07-10 山东车微联信息技术股份有限公司 一种安卓平台下应用进程保活的方法、终端及存储介质
WO2022042237A1 (zh) * 2020-08-31 2022-03-03 华为技术有限公司 加速应用启动的方法、电子设备及计算机存储介质
CN112162783A (zh) * 2020-09-27 2021-01-01 珠海格力电器股份有限公司 音乐播放应用保活处理方法、***、存储介质及电子设备
CN112860408A (zh) * 2021-03-03 2021-05-28 苏州沁游网络科技有限公司 一种云真机中的进程保活方法、装置、***及存储介质
CN113377543A (zh) * 2021-06-28 2021-09-10 上海商汤科技开发有限公司 任务处理***、电子设备和存储介质
WO2023109310A1 (zh) * 2021-12-13 2023-06-22 北京有竹居网络技术有限公司 进程管理方法、装置、存储介质以及电子设备
CN114697377B (zh) * 2022-04-07 2023-09-05 深信服科技股份有限公司 一种客户端产品的保活方法、***、装置及可读存储介质
CN114697377A (zh) * 2022-04-07 2022-07-01 深信服科技股份有限公司 一种客户端产品的保活方法、***、装置及可读存储介质
CN114816546A (zh) * 2022-04-28 2022-07-29 合肥高维数据技术有限公司 客户端应用程序多重保活方法及***

Also Published As

Publication number Publication date
WO2015196967A1 (zh) 2015-12-30
CN105335171B (zh) 2019-05-10

Similar Documents

Publication Publication Date Title
CN105335171A (zh) 应用程序常驻操作***后台的方法及装置
US10860444B2 (en) Seamless mobility for kubernetes based stateful pods using moving target defense
CN108737270B (zh) 一种服务器集群的资源管理方法和装置
US10545750B2 (en) Distributed upgrade in virtualized computing environments
WO2018103521A1 (zh) 服务器的监控方法、装置和存储介质
US9311200B1 (en) Method and system for providing high availability to computer applications
US8607225B2 (en) Managed upgrades of components in an integrated software and hardware system
CN111061491B (zh) 一种基于lxc容器技术的边缘计算网关管理***及方法
US20150242197A1 (en) Automatic Installing and Scaling of Application Resources in a Multi-Tenant Platform-as-a-Service (PaaS) System
WO2021098354A1 (zh) 一种基于无障碍服务实现缄默安装的安卓渗透方法和装置
CA2511049A1 (en) System to automatically process components on a device
CN105981332A (zh) 使用喷泉码广播管理信息
GB2463370A (en) Method of allowing an application to run as a service application on a mobile computing device.
CN111045854A (zh) 用于管理服务容器的方法、设备和计算机程序产品
US20080183878A1 (en) System And Method For Dynamic Patching Of Network Applications
CN114553693B (zh) 网关升级方法及装置
US20080263183A1 (en) Management of Kernel configurations for nodes in a clustered system
US7917614B2 (en) Fault tolerance in a client side pre-boot execution
CN114546588A (zh) 任务的部署方法、装置、存储介质及电子装置
JP5359835B2 (ja) 情報処理装置、配布システム及び受信方法
CN115309457A (zh) 应用实例的重启方法、装置、电子设备及可读存储介质
CN105589738A (zh) 一种智能分屏的并发处理方法及相应的智能终端
US11294696B2 (en) Virtual desktop infrastucture management by a management service enrolling and de-enrolling a virtual machine with an endpoint manager
CN109101253B (zh) 云计算***中主机的管理方法和装置
JPH10320184A (ja) ソフトウェアバージョン管理システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190510

Termination date: 20210624