发明内容
针对现有技术中的问题,本发明实施例提供一种应用程序保活方法及装置。
具体地,本发明实施例提供了以下技术方案:
第一方面,本发明实施例提供了一种应用程序保活方法,包括:
在目标APP内注册动态壁纸服务;
判断移动终端的壁纸显示模式是否为静态壁纸显示模式,若是,则将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式,并将目标APP本身的文件名发送给移动终端,以使移动终端根据所述文件名按照动态壁纸更新周期定时向目标APP发送动态壁纸更新请求;
控制目标APP在接收到移动终端定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
进一步地,所述在目标APP内注册动态壁纸服务,具体包括:
在目标APP的AndroidManifest文件中注册动态壁纸服务。
进一步地,所述判断移动终端的壁纸显示模式是否为静态壁纸显示模式,具体包括:
通过判断移动终端的WallpaperManager类的getWallpaperInfo函数的返回结果是否为空来判断当前壁纸显示模式是否为静态壁纸显示模式。
进一步地,所述将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式,具体包括:
通过移动终端的startActivityForResult方法将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式。
进一步地,所述控制目标APP在接收到移动终端定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示,具体包括:
控制目标APP在接收移动终端通过WallpaperService类的drawSurfaceView函数定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
第二方面,本发明实施例还提供了一种应用程序保活装置,包括:
注册模块,用于在目标APP内注册动态壁纸服务;
判断模块,用于判断移动终端的壁纸显示模式是否为静态壁纸显示模式,若是,则将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式,并将目标APP本身的文件名发送给移动终端,以使移动终端根据所述文件名按照动态壁纸更新周期定时向目标APP发送动态壁纸更新请求;
控制模块,用于控制目标APP在接收到移动终端定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
进一步地,所述注册模块,具体用于:在目标APP的AndroidManifest文件中注册动态壁纸服务。
进一步地,所述判断模块在判断移动终端的壁纸显示模式是否为静态壁纸显示模式时,具体用于:
通过判断移动终端的WallpaperManager类的getWallpaperInfo函数的返回结果是否为空来判断当前壁纸显示模式是否为静态壁纸显示模式。
进一步地,所述判断模块在将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式时,具体用于:
通过移动终端的startActivityForResult方法将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式。
进一步地,所述控制模块,具体用于:
控制目标APP在接收移动终端通过WallpaperService类的drawSurfaceView函数定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述应用程序保活方法的步骤。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述应用程序保活方法的步骤。
由上面技术方案可知,本发明实施例提供的应用程序保活方法及装置,通过将移动终端的静态壁纸显示模式修改为动态壁纸显示模式的方式,使得移动终端按照动态壁纸更新周期定时不断向目标APP请求动态壁纸,进而使得目标APP不停被移动终端触发唤醒,从而实现了目标APP的保活,此外,由于利用移动终端的静态壁纸作为动态壁纸的每一帧,因此使得移动终端的壁纸显示看上去并没有变化,从而在实现保活APP的过程中,还实现了用户无感知的效果。此外,由于各种型号的移动终端大部分都支持动态壁纸服务,因此本发明实施例提供的应用程序保活方法及装置,适用于各种型号的移动终端,在各种型号的移动终端上的保活效果表现良好,可以实现让目标APP在用户无感的情况下大大提高存活的概率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
正如背景技术部分所述,Android的APP想要在系统上一直运行,目前业内采用的方案分为以下几种:1、Root手机,提供自己的权限。此方案需要root用户的手机,而root手机在现在的环境下越来越困难。2、提高进程的优先级,此方案会在通知栏出现一个常驻的应用通知,对用户的使用体验有影响,用户也可以有明显的感知。3、多个进程互相拉起,此方案在华为小米等手机上效果一般,这些手机会把多个进程同时全部关闭。4、使用厂家提供的接口,比如华为和小米提供了官方的在手机上进行保活的接口,但此方案属于企业市场,需要和对方签订协议,并且只能在这些手机上使用。对于上面这几种方案来说,第1种方案的可行差较差。第2种方案会让用户有明显的感知,用户体验不好。第3种方案在发现后会被同时关闭。第4种方案只是局限于某些型号的手机且还需要额外签订协议,操作麻烦且不通用。为解决这些问题,本发明实施例开创性地引入了一种全新的应用程序保活方法及装置,本发明实施例提供的应用程序保活方法及装置,不但可操作性强,能够实现应用程序保活,而且还可以实现用户无感知。此外,本发明实施例提供的应用程序保活方法及装置还适用于各种型号的移动终端,通用性和可用性非常好。下面将通过具体实施例对本发明提供的应用程序保活方法及装置进行详细说明。
图1示出了本发明实施例提供的应用程序保活方法的流程图。如图1所示,本发明实施例提供的应用程序保活方法包括如下步骤:
步骤101:在目标APP内注册动态壁纸服务;
在本步骤中,目标APP是指待进行保活的应用程序,例如可以为安装在移动终端上的任意APP,如杀毒类APP、交友类APP、地图类APP、购物类APP、学习类APP等。
在本步骤中,为了使得后续目标APP可以为移动终端提供动态壁纸服务,因此,需要先在目标APP内注册动态壁纸服务,目标APP注册动态壁纸服务后,移动终端的操作系统就可以定时向目标APP请求需要更新的动态壁纸,从而可以借助这一点就可以目标APP与操作系统的不间断通信,进而可以实现目标APP的保活。
在本步骤中,需要说明的是,由于大多数Android移动终端都具有动态壁纸特性,而动态壁纸的每一帧画面均是由提供动态壁纸的APP来提供的,所以系统会频繁的唤起提供动态壁纸的APP。基于此,本实施例充分利用Android移动终端动态壁纸这一特性,想办法使得目标APP为系统提供动态壁纸,进而使得目标APP不断被系统唤醒,进而实现目标APP的保活。
在本步骤中,需要说明的是,本步骤的执行主体可以为目标APP,也可以为设置在目标APP中的功能模块。
假设本步骤的执行主体为目标APP,则步骤101就是:目标APP在其自身内注册动态壁纸服务。例如,目标APP可以在其的AndroidManifest文件中注册动态壁纸服务,声明方式为<intent-filter>
步骤102:判断移动终端的壁纸显示模式是否为静态壁纸显示模式,若是,则将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式,并将目标APP本身的文件名发送给移动终端,以使移动终端根据所述文件名按照动态壁纸更新周期定时向目标APP发送动态壁纸更新请求;
在本步骤中,在利用Android移动终端动态壁纸这一特性之前,需要先判断移动终端的壁纸显示模式是否为静态壁纸显示模式,若当前壁纸显示模式为静态壁纸显示模式,则可以修改当前壁纸显示模式为动态壁纸显示模式,使得目标APP有机会为系统提供动态壁纸,进而使得目标APP不断被系统唤醒,进而实现目标APP的保活。
在本步骤中,在进行目标APP保活的同时,为了使得用户无感知,需要先获取用户手机上当前的静态壁纸,然后将此壁纸作为动态壁纸的每一帧返回给系统。通过这种方式,即可做到用户的壁纸看上去并没有变化,但APP却实现了保活,经过实验,该方法对APP的保活效果良好。
需要说明的是,本步骤的执行主体可以为目标APP,也可以为设置在目标APP中的功能模块。假设本步骤的执行主体为目标APP,则步骤102就是:目标APP判断移动终端的壁纸显示模式是否为静态壁纸显示模式,若是,则将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式,以便于后续保持目标APP与移动终端之间的动态壁纸通信过程。
在本步骤中,在判断移动终端的壁纸显示模式是否为静态壁纸显示模式时,可以通过判断移动终端操作系统的WallpaperManager类的getWallpaperInfo函数的返回结果是否为空来判断当前是否是静态壁纸显示模式,若是,则通过系统的startActivityForResult方法来把壁纸显示模式设置成动态壁纸,其参数是WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER,并把目标APP自己的文件名或包名传递给系统。
在本步骤中,所述移动终端可以为如智能手机、移动设备、汽车、平板电脑和个人数字助理等设备。
在本步骤中,若判断获知移动终端的壁纸显示模式为动态壁纸显示模式,则不进行后续处理。
步骤103:控制目标APP在接收到移动终端定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
在本步骤中,需要说明的是,本步骤的执行主体可以为目标APP,也可以为设置在目标APP中的功能模块。假设本步骤的执行主体为目标APP,则步骤103就是:目标APP控制其本身在接收到移动终端定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
在本步骤中,由于步骤101目标APP已经在其自身的AndroidManifest文件中注册了动态壁纸服务,声明方式为<intent-filter>
因此,移动终端操作系统会通过WallpaperService类的drawSurfaceView函数来问目标APP当前待显示的动态壁纸是什么,目标APP可以通过下面的方法把当前的静态壁纸不断返回给移动终端操作系统当做动态壁纸来使用:
如图2所示的实现原理图可知,本实施例新颖地以及开创性地利用了Android的动态壁纸特性,由于动态壁纸的每一帧画面均是由提供动态壁纸的APP来提供的,所以会频繁的唤起提供动态壁纸的APP。在本实施例中,在使用过程中,为了让用户无感知,正如图2所示,APP要先获取用户手机上当前的静态壁纸,然后将此壁纸作为动态壁纸的每一帧返回给系统。通过这种方式,即可做到用户的壁纸看上去并没有变化,但APP却实现了保活,经过实验,对APP的保活效果良好。
由上面技术方案可知,本发明实施例提供的应用程序保活方法,通过将移动终端的静态壁纸显示模式修改为动态壁纸显示模式的方式,使得移动终端按照动态壁纸更新周期定时不断向目标APP请求动态壁纸,进而使得目标APP不停被移动终端触发唤醒,从而实现了目标APP的保活,此外,由于利用移动终端的静态壁纸作为动态壁纸的每一帧,因此使得移动终端的壁纸显示看上去并没有变化,从而在实现保活APP的过程中,还实现了用户无感知的效果。此外,由于各种型号的移动终端大部分都支持动态壁纸服务,因此本发明实施例提供的应用程序保活方法及装置,适用于各种型号的移动终端,在各种型号的移动终端上的保活效果表现良好,可以实现让目标APP在用户无感的情况下大大提高存活的概率。
此外,还需要补充说明的是,由于动态壁纸服务是安卓系统默认支持的服务,因此本实施例提供的这种应用程序保活方法,不容易被破坏,因而具有较强的稳定性。
进一步地,基于上述实施例的内容,在本实施例中,所述步骤101在目标APP内注册动态壁纸服务,具体可通过如下方式实现:
在目标APP的AndroidManifest文件中注册动态壁纸服务。
进一步地,基于上述实施例的内容,在本实施例中,所述步骤102中判断移动终端的壁纸显示模式是否为静态壁纸显示模式的处理过程,具体可通过如下方式实现:
通过判断移动终端的WallpaperManager类的getWallpaperInfo函数的返回结果是否为空来判断当前壁纸显示模式是否为静态壁纸显示模式。
进一步地,基于上述实施例的内容,在本实施例中,所述步骤102中将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式的处理过程,具体可通过如下方式实现:
通过移动终端的startActivityForResult方法将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式。
进一步地,基于上述实施例的内容,在本实施例中,所述步骤103控制目标APP在接收到移动终端定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示,具体可通过如下方式实现:
控制目标APP在接收移动终端通过WallpaperService类的drawSurfaceView函数定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
图3示出了本发明实施例提供的应用程序保活装置的结构示意图。如图3所示,本发明实施例提供的应用程序保活装置包括:注册模块21、判断模块22和控制模块23,其中:
注册模块21,用于在目标APP内注册动态壁纸服务;
判断模块22,用于判断移动终端的壁纸显示模式是否为静态壁纸显示模式,若是,则将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式,并将目标APP本身的文件名发送给移动终端,以使移动终端根据所述文件名按照动态壁纸更新周期定时向目标APP发送动态壁纸更新请求;
控制模块23,用于控制目标APP在接收到移动终端定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
进一步地,基于上述实施例的内容,在本实施例中,所述注册模块,具体用于:在目标APP的AndroidManifest文件中注册动态壁纸服务。
进一步地,基于上述实施例的内容,在本实施例中,所述判断模块在判断移动终端的壁纸显示模式是否为静态壁纸显示模式时,具体用于:
通过判断移动终端的WallpaperManager类的getWallpaperInfo函数的返回结果是否为空来判断当前壁纸显示模式是否为静态壁纸显示模式。
进一步地,基于上述实施例的内容,在本实施例中,所述判断模块在将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式时,具体用于:
通过移动终端的startActivityForResult方法将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式。
进一步地,基于上述实施例的内容,在本实施例中,所述控制模块,具体用于:
控制目标APP在接收移动终端通过WallpaperService类的drawSurfaceView函数定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
由于本发明实施例提供的应用程序保活装置,可以用于执行上述实施例所述的应用程序保活方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。
基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图4,所述电子设备具体包括如下内容:处理器401、存储器402、通信接口403和通信总线404;
其中,所述处理器401、存储器402、通信接口403通过所述通信总线404完成相互间的通信;
所述处理器401用于调用所述存储器402中的计算机程序,所述处理器执行所述计算机程序时实现上述应用程序保活方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:在目标APP内注册动态壁纸服务;判断移动终端的壁纸显示模式是否为静态壁纸显示模式,若是,则将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式,并将目标APP本身的文件名发送给移动终端,以使移动终端根据所述文件名按照动态壁纸更新周期定时向目标APP发送动态壁纸更新请求;控制目标APP在接收到移动终端定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述应用程序保活方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:在目标APP内注册动态壁纸服务;判断移动终端的壁纸显示模式是否为静态壁纸显示模式,若是,则将移动终端的壁纸显示模式由静态壁纸显示模式修改为动态壁纸显示模式,并将目标APP本身的文件名发送给移动终端,以使移动终端根据所述文件名按照动态壁纸更新周期定时向目标APP发送动态壁纸更新请求;控制目标APP在接收到移动终端定时发送的动态壁纸更新请求后,根据所述动态壁纸更新请求,定时将移动终端当前使用的静态壁纸作为动态壁纸的每一帧发送给移动终端,使得移动终端将所述静态壁纸作为动态壁纸的每一帧进行展示。
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的应用程序保活方法。
此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
此外,在本发明中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。