检测用户使用应用程序的方法和装置技术领域
本发明涉及应用程序管理领域,特别是涉及一种检测用户使用应用程序的方法和
装置。
背景技术
随着计算机和网络技术的发展,越来越多的用户通过电子产品上安装应用程序进
行网络交流。用户根据自身需求会安装对应的应用程序,不同的用户安装和使用的应用程
序可能不同。为了统计用户对所安装的应用程序的使用时间,传统的方式是通过检测到用
户启动应用程序,记录该应用程序的开始时间,检测该应用程序被关闭后,记录结束时间,
根据开始时间和结束时间得到该应用程序的使用时间,通过该方式计算得到的应用程序使
用时间准确性低。
发明内容
基于此,有必要针对传统计算应用程序的使用时间的准确性低的问题,提供一种
检测用户使用应用程序的方法和装置,能提高检测用户使用应用程序的使用时间的准确
性。
一种检测用户使用应用程序的方法,包括:
通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序;
判断本次检测的应用程序与相邻上一次检测的应用程序是否相同;
若所述本次检测的应用程序与相邻上一次检测的应用程序不同,则获取上一次检
测不同时所记录的第一时刻以及本次检测的第二时刻,根据所述第一时刻和第二时刻获取
所述相邻上一次检测的应用程序的使用时长;
获取用户标识,统计预设时间内所述用户标识对应的各应用程序的累计使用时
长。
一种检测用户使用应用程序的方法,包括:
接收用户终端上传的用户标识、所述用户标识对应的应用程序、各应用程序对应
的每次使用时长,其中,所述各应用程序对应的每次使用时长是通过挂钩函数监测管理运
行应用程序堆栈的栈顶中的应用程序,并判断本次检测的应用程序与相邻上一次检测的应
用程序是否相同,若所述本次检测的应用程序与相邻上一次检测的应用程序不同,获取上
一次检测不同时所记录的第一时刻以及本次检测的第二时刻,根据所述第一时刻和第二时
刻所获取的所述相邻上一次检测的应用程序的使用时长;
统计预设时间内所述用户标识对应的各应用程序的累计使用时长。
一种检测用户使用应用程序的装置,包括:
监测模块,用于通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序;
第一判断模块,用于判断本次检测的应用程序与相邻上一次检测的应用程序是否
相同;
第一单次时长获取模块,用于若所述本次检测的应用程序与相邻上一次检测的应
用程序不同,则获取上一次检测不同时所记录的第一时刻以及本次检测的第二时刻,根据
所述第一时刻和第二时刻获取所述相邻上一次检测的应用程序的使用时长;
统计模块,用于获取用户标识,统计预设时间内所述用户标识对应的各应用程序
的累计使用时长。
一种检测用户使用应用程序的装置,包括:
数据接收模块,用于接收用户终端上传的用户标识、所述用户标识对应的应用程
序、各应用程序对应的每次使用时长,其中,所述各应用程序对应的每次使用时长是所述用
户终端通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序,并判断本次检测的
应用程序与相邻上一次检测的应用程序是否相同,若所述本次检测的应用程序与相邻上一
次检测的应用程序不同,获取上一次检测不同时所记录的第一时刻以及本次检测的第二时
刻,根据所述第一时刻和第二时刻所获取的所述相邻上一次检测的应用程序的使用时长;
累计模块,用于统计预设时间内所述用户标识对应的各应用程序的累计使用时
长。
上述检测用户使用应用程序的方法和装置,通过挂钩函数监测管理运行应用程序
堆栈的栈顶中的应用程序,当本次检测的应用程序与相邻上一次检测的应用程序不同时,
获取到上一次检测不同时所记录的第一时刻和本次检测的第二时刻,可以得到相邻上一次
检测的应用程序的使用时长,通过检测栈顶中应用程序的变化得到的应用程序的使用时
长,因栈顶中的应用程序时用户当前正在使用的应用程序,如此检测得到的应用程序的使
用时长准确性高,在预设时间内统计得到的应用程序的累计使用时长准确性也高。
附图说明
图1为一个实施例中检测用户使用应用程序的方法的应用环境示意图;
图2A为一个实施例中用户终端的内部结构示意图;
图2B为一个实施例中服务器的内部结构示意图;
图3为一个实施例中在用户终端的桌面上启动一个应用程序的时序图;
图4为一个实施例中检测用户使用应用程序的方法的流程图;
图5为另一个实施例中检测用户使用应用程序的方法的流程图;
图6为另一个实施例中检测用户使用应用程序的方法的流程图;
图7为另一个实施例中检测用户使用应用程序的方法的流程图;
图8为用户终端上展示的用户常用应用程序的示意图;
图9为一个实施例中检测用户使用应用程序的装置的结构框图;
图10为另一个实施例中检测用户使用应用程序的装置的结构框图;
图11为另一个实施例中检测用户使用应用程序的装置的结构框图;
图12为另一个实施例中检测用户使用应用程序的装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对
本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并
不用于限定本发明。
图1为一个实施例中检测用户使用应用程序的方法的应用环境示意图。如图1所
示,该应用环境包括用户终端110和服务器120。用户终端110上安装有应用程序管理客户
端,服务器120上安装有应用程序管理服务端,用户终端110和服务器120进行数据通信。用
户终端110通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序,通过比较本次
检测的应用程序与相邻上一次检测的应用程序是否相同,若不同,则获取上一次检测不同
时所记录的第一时刻和本次检测的第二时刻,根据第一时刻和第二时刻获取相邻上一次检
测的应用程序的使用时长,将该上一次检测的应用程序及对应的使用时长、用户标识上传
到服务器120进行存储。
图2A为一个实施例中用户终端(或电子设备等)的内部结构示意图。如图2A所示,
该用户终端包括通过系统总线连接的处理器、非易失性存储介质、内存储器、网络接口、显
示屏和输入装置。其中,终端的非易失性存储介质存储有操作系统,还包括一种检测用户使
用应用程序的装置,该检测用户使用应用程序的装置用于实现一种检测用户使用应用程序
的方法。该处理器用于提供计算和控制能力,支撑整个终端的运行。用户终端中的内存储器
为非易失性存储介质中的检测用户使用应用程序的装置的运行提供环境,该内存储器中可
储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行
一种检测用户使用应用程序的方法。网络接口用于与服务器进行网络通信,如上传应用程
序及对应的使用时长至服务器,接收服务器推送的应用程序信息等。用户终端的显示屏可
以是液晶显示屏或者电子墨水显示屏等,输入装置可以是显示屏上覆盖的触摸层,也可以
是终端外壳上设置的按键、轨迹球或触控板,也可以是外接的键盘、触控板或鼠标等。该用
户终端可以是手机、平板电脑或者个人数字助理或穿戴式设备等。本领域技术人员可以理
解,图2A中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方
案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者
组合某些部件,或者具有不同的部件布置。
图2B为一个实施例中服务器(或云端等)的内部结构示意图。如图2B所示,该服务
器包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该服
务器的非易失性存储介质存储有操作系统、数据库和检测用户使用应用程序的装置,数据
库中存储有用户标识、应用程序标识及对应的使用时长,该检测用户使用应用程序的装置
用于实现适用于服务器的一种检测用户使用应用程序的方法。该服务器的处理器用于提供
计算和控制能力,支撑整个服务器的运行。该服务器的内存储器为非易失性存储介质中的
检测用户使用应用程序的装置的运行提供环境,该内存储器中可储存有计算机可读指令,
该计算机可读指令被所述处理器执行时,可使得所述处理器执行一种检测用户使用应用程
序的方法。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收用户
终端发送的恢复请求以及向终端返回应用程序等。服务器可以用独立的服务器或者是多个
服务器组成的服务器集群来实现。本领域技术人员可以理解,图2B中示出的结构,仅仅是与
本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限
定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不
同的部件布置。
图3为一个实施例中在用户终端的桌面上启动一个应用程序的时序图。如图3所
示,桌面(Launcher)上排布着应用程序图标;AMS(Activity Manager Service,活动管理服
务)主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,职责与
操作系统中的进程管理和调度模块相类似。Activity Thread(线程),pause状态是指一个
activity是部分可见的,只是被后来的视图组件挡住了而失去焦点,这种情况下,失去焦点
的activity就处于pause状态。应用程序启动的时序包括:
(1)launcher(桌面)获取点击应用程序的图标,则start Activity(启动一个界
面);
(2)桌面向AMS(活动管理服务)发送要启动一个activity(活动);
(3)AMS通知launcher进入pause(暂停)状态;
(4)laucher进入pause状态;
(5)laucher通知AMS,已经准备就绪进入pause状态;
(6)AMS创建一个新的进程,创建ActivityThread;
(7)AMS通知ActivityThread启动ActivityThread实例;
(8)ActivityThread将应用程序进程绑定到AMS;
(9)AMS向ActivityThread通知启动activity。
在启动应用程序时,可以通过hook函数挂钩管理运行应用程序堆栈的接口,监测
栈顶中应用程序,检测应用程序的变化,若发生变化,记录这个应用程序的开始时刻,当下
次再发生变化时,记录该应用程序的结束时刻,根据结束时刻和开始时刻得到该应用程序
本次的使用时长。
图4为一个实施例中检测用户使用应用程序的方法的流程图。如图4所示,一种检
测用户使用应用程序的方法,运行于用户终端上,包括步骤402至步骤408,其中:
步骤402,通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序。
具体地,应用程序管理软件通过hook函数(挂钩函数)监测管理运行应用程序堆栈
的栈顶中的应用程序。在用户终端上被启动运行的应用程序通过管理运行应用程序的堆栈
进行管理,管理运行应用程序堆栈的栈顶中的应用程序表示用户当前正在使用和交互的应
用程序。例如用户正在通过即时通信应用程序聊天,则管理运行应用程序堆栈的栈顶中的
应用程序即为该即时通信应用程序,当用户通过home按键或桌面切换指令切换到桌面时,
管理运行应用程序堆栈的栈顶中的应用程序即为桌面。
步骤404,判断本次检测的应用程序与相邻上一次检测的应用程序是否相同,若不
同,执行步骤406,若相同,执行步骤402。
本实施例中,实时通过hook函数检测管理运行应用程序堆栈的栈顶中的应用程
序。本次检测的应用程序可为本次轮询的时刻检测的应用程序;则相邻上一次检测的应用
程序可为与本次轮询的时刻相邻的上一时刻检测的应用程序。若采用定时检测,则本次检
测的应用程序可为当前检测的应用程序,则相邻上一次检测的应用程序可为与当前检测相
邻的上一次检测的应用程序。例如定时检测为每3秒检测一次,当本次检测的应用程序为6
秒时刻检测的应用程序,则相邻上一次检测的应用程序为3秒时刻检测的应用程序。
判断本次检测的应用程序与相邻上一次检测的应用程序是否相同,若本次检测的
应用程序与相邻上一次检测的应用程序不同,则获取上一次检测不同时所记录的第一时刻
以及本次检测的第二时刻,根据第一时刻和第二时刻获取相邻上一次检测的应用程序的使
用时长。其中,第一时刻是指相邻上一次检测的应用程序的开始时刻,第二时刻是指相邻上
一次检测的应用程序的结束时刻,通过结束时刻与开始时刻之差得到相邻上一次检测的应
用程序的本次的使用时长。
若本次的应用程序与相邻上一次检测的应用程序相同,则说明两次检测的应用程
序未变化,可继续检测管理运行应用程序堆栈的栈顶中的应用程序,判断本次检测的应用
程序与相邻上一次检测的应用程序是否相同,若不同,获取上一次检测不同时所记录的第
一时刻以及本次检测的第二时刻,根据所述第一时刻和第二时刻获取所述相邻上一次检测
的应用程序的使用时长。
在一个实施例中,判断本次检测的应用程序与相邻上一次检测的应用程序是否相
同,可包括:获取本次检测的应用程序标识和相邻上一次检测的应用程序标识;判断本次检
测的应用程序标识和相邻上一次检测的应用程序标识是否相同。
本实施例中,应用程序标识是用于唯一表示应用程序身份的。该应用程序标识可
为应用程序包名等。通过应用程序标识进行比较是否相同,计算量小,节省资源。
步骤406,获取上一次检测不同时所记录的第一时刻以及本次检测的第二时刻,根
据所述第一时刻和第二时刻获取所述相邻上一次检测的应用程序的使用时长。
本实施例中,还可获取用户标识,将用户标识、相邻上一次检测的应用程序及对应
的使用时长上传到服务器进行保存。方便服务器对用户标识对应的应用程序的使用时长进
行统计或接收查询等。
步骤408,获取用户标识,统计预设时间内所述用户标识对应的各应用程序的累计
使用时长。
本实施例中,通过每次检测管理运行应用程序堆栈的栈顶中的应用程序,得到用
户终端上各应用程序每次的使用时长。
获取预设时间,将该预设时间内每次统计的各应用程序的使用时长求和,得到预
设时间内各应用程序的累计使用时长,获取用户标识,可得到用户标识对应的各应用程序
的累计使用时长。
预设时间可根据需要选定,如距离当前时间1个月的时间段、距离当前时间3个月
的时间段等,不限于此。用户标识是用于唯一表示用户身份的。该用户标识可为即时通信账
号、电子邮箱、移动通信标识、在应用程序管理平台注册的用户账号等。
上述检测用户使用应用程序的方法,通过挂钩函数监测管理运行应用程序堆栈的
栈顶中的应用程序,当本次检测的应用程序与相邻上一次检测的应用程序不同时,获取到
上一次检测不同时所记录的第一时刻和本次检测的第二时刻,可以得到相邻上一次检测的
应用程序的使用时长,通过检测栈顶中应用程序的变化得到的应用程序的使用时长,因栈
顶中的应用程序时用户当前正在使用的应用程序,如此检测得到的应用程序的使用时长准
确性高,在预设时间内统计得到的应用程序的累计使用时长准确性也高。
在一个实施例中,上述检测用户使用应用程序的方法还包括:按照该累计使用时
长从高到低筛选出预定数量的应用程序作为与该用户标识对应的常用应用程序。
本实施例中,预定数量可根据需要设定,如1个、2个、3个、4个、5个、6个等。用户标
识对应的常用应用程序是指用户标识在用户终端上经常使用的应用程序。
在一个实施例中,上述检测用户使用应用程序的方法还包括:将该累计使用时长
超过时长阈值的应用程序作为与该用户标识对应的常用应用程序。
本实施例中,时长阈值可根据需要设定,如1个星期、1个月、3个月等。
进一步的,上述检测用户使用应用程序的方法还包括:将与用户标识对应的常用
应用程序上传到服务器进行存储。
本实施例中,通过将用户标识对应的常用应用程序上传到服务器进行保存,方便
后续进行用户常用应用程序的恢复。
在一个实施例中,如图5所示,上述检测用户使用应用程序的方法还包括:
步骤502,当通过挂钩函数挂钩所述管理运行应用程序堆栈的接口失败时,记录所
述栈顶中应用程序的开始使用时刻。
本实施例中,当启动一个应用程序时,该应用程序位于栈顶中,记录该应用程序的
开始使用时刻。或者当本次轮询的应用程序与相邻上一次轮询的应用程序不同时,记录本
次轮询的时刻,即本次轮询的应用程序的开始使用时刻。
步骤504,按照指定间隔时间对所述栈顶发起轮询,获取所述栈顶中的应用程序。
本实施例中,指定间隔时间可根据需要设定,如100毫秒、200毫秒、500毫秒等。应
用程序管理软件按照指定间隔时间对栈顶发起轮询,获取所述栈顶中的应用程序。
通过轮询可获取栈顶中的应用程序。
步骤506,判断本次轮询的应用程序与相邻上一次轮询的应用程序是否相同,若不
同,执行步骤508,若相同,执行步骤504。
步骤508,记录本次轮询的时刻,根据所述上一次轮询的应用程序的开始使用时刻
与本次轮询的时刻获取所述上一次轮询的应用程序的使用时长,并将所述本次轮询的时刻
作为所述本次轮询的应用程序的开始使用时刻,然后再执行步骤504。
本实施例中,本次轮询的时刻是指本次轮询的时刻。根据本次轮询的时刻与上一
次轮询的应用程序的开始使用时刻之差得到该上一次轮询的应用程序的使用时长。同时,
将本次轮询的时刻作为本次轮询的应用程序的开始使用时刻,再按照指定间隔时间对所述
栈顶发起轮询,获取所述栈顶中的应用程序,判断本次轮询的相邻下一次轮询的应用程序
与该本次轮询的应用程序是否相同,若不同,则记录相邻下一次轮询的时刻,根据本次轮询
的时刻与本次轮询的应用程序的开始使用时刻得到本次轮询的应用程序的使用时长。
上述检测用户使用应用程序的方法,在通过挂钩函数挂钩所述管理运行应用程序
堆栈的接口失败时,通过轮询栈顶的方式,查询栈顶中的应用程序,获取应用程序的使用时
长,因轮询的栈顶中的应用程序,检测应用程序的使用时长准确性高。
在一个实施例中,在通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程
序之前,上述检测用户使用应用程序的方法还包括:检测是否具有超级管理权限;若具有超
级管理权限,则通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序;若不具有
超级管理权限,则执行该记录所述栈顶中应用程序的开始使用时刻,按照指定间隔时间对
所述栈顶发起轮询,获取所述栈顶中的应用程序的步骤。
本实施例中,超级管理权限是指root权限,即最高管理权限。通过root权限,方便
进行hook管理运行应用程序堆栈的接口。
在一个实施例中,在通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程
序之前,上述检测用户使用应用程序的方法还包括:检测是否具有超级管理权限;若具有超
级管理权限,则执行所述通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序的
步骤;若不具有超级管理权限,则检测用户终端是否具有临时的超级管理权限;若具有临时
的超级管理权限,则执行所述通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程
序的步骤;若不具有临时的超级管理权限,则向服务器发起获取临时的超级管理权限策略
的请求,接收所述服务器返回的临时的超级管理权限策略;若根据所述临时的超级管理权
限策略获取临时的超级管理权限成功,则执行所述通过挂钩函数监测管理运行应用程序堆
栈的栈顶中的应用程序的步骤;若根据所述临时的超级管理权限策略获取临时的超级管理
权限失败,则执行所述记录所述栈顶中应用程序的开始使用时刻,按照指定间隔时间对所
述栈顶发起轮询,获取栈顶中应用程序的步骤。
图6为另一个实施例中检测用户使用应用程序的方法的流程图。如图6所示,在一
个实施例中,该检测用户使用应用程序的方法包括:
步骤602,检测是否具有超级管理权限,若具有超级管理权限,则执行步骤612,若
不具有超级管理权限,则执行步骤604。
步骤604,检测用户终端是否具有临时的超级管理权限,若具有临时的超级管理权
限,则执行步骤612,若不具有临时的超级管理权限,则执行步骤606。
步骤606,向服务器发起获取临时的超级管理权限策略的请求,再执行步骤608。
步骤608,是否接收到所述服务器返回的临时的超级管理权限策略,若是,执行步
骤610,若否,执行步骤624。
步骤610,判断临时的超级管理权限策略是否成功获取临时的超级管理权限,若
是,则执行步骤612,若否,执行步骤614;若否,执行步骤624。
步骤612,通过挂钩函数挂钩管理运行应用程序堆栈的接口,再执行步骤614。
步骤614,判断是否挂钩成功,若是,执行步骤616,若否,执行步骤
步骤616,通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序,再执行
步骤618。
步骤618,判断本次检测的应用程序与相邻上一次检测的应用程序是否相同,若相
同,执行步骤616,若不同,执行步骤620。
步骤620,获取上一次检测不同时所记录的第一时刻以及本次检测的第二时刻,根
据所述第一时刻和第二时刻获取所述相邻上一次检测的应用程序的使用时长,再执行步骤
622。
步骤622,将用户标识、相邻上一次检测的应用程序及对应的使用时长上传到服务
器,再执行步骤616。
步骤624,记录栈顶中应用程序的开始使用时刻,再执行步骤626。
步骤626,按照指定间隔时间对所述栈顶发起轮询,获取所述栈顶中的应用程序,
再执行步骤628。
步骤628,判断本次轮询的应用程序与相邻上一次轮询的应用程序是否相同,若相
同,则执行步骤626,若不同,则执行步骤630。
步骤630,记录本次轮询的时刻,根据所述上一次轮询的应用程序的开始使用时刻
与本次轮询的时刻获取所述上一次轮询的应用程序的使用时长。
步骤632,将用户标识、相邻上一次轮询的应用程序以及对应的使用时长上传到服
务器,再执行步骤624。
具体地,获取用户标识,将用户标识、相邻上一次轮询的应用程序以及对应的使用
时长上传到服务器,可在服务器上进行存储,方便后续查询或统计分析等。
在上述检测用户使用应用程序的方法中步骤622和步骤632可以省略。
上述检测用户使用应用程序的方法,通过root权限或临时root权限,可保证hook
到系统的应用程序接口,通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序,
当本次检测的应用程序与相邻上一次检测的应用程序不同时,获取到上一次检测不同时所
记录的第一时刻和本次检测的第二时刻,可以得到相邻上一次检测的应用程序的使用时
长,通过检测栈顶中应用程序的变化得到的应用程序的使用时长,因栈顶中的应用程序时
用户当前正在使用的应用程序,如此检测得到的应用程序的使用时长准确性高,在预设时
间内统计得到的应用程序的累计使用时长准确性也高;在通过挂钩函数挂钩所述管理运行
应用程序堆栈的接口失败时,通过轮询栈顶的方式,查询栈顶中的应用程序,获取应用程序
的使用时长,因轮询的栈顶中的应用程序,检测应用程序的使用时长准确性高;将用户标
识、相邻上一次轮询的应用程序以及对应的使用时长上传到服务器,可在服务器上进行存
储,方便后续查询或统计分析等。
在一个实施例中,上述检测用户使用应用程序的方法还包括:将所述用户标识、所
述用户标识对应的应用程序标识,以及各应用程序标识对应的应用程序每次使用时长上传
到服务器;接收所述服务器推送的累计使用时长超过预设时长的应用程序的同类的应用程
序信息。
本实施例中,服务器根据接收到的用户标识、对应的应用程序及使用时长,可得到
各应用程序的累计使用时长,根据累计使用时长与预设时长比较,得到超过预设时长的应
用程序,选取超过预设时长的应用程序同类的应用程序,将该同类的应用程序信息推送给
用户,达到精准推荐应用程序的目的,提高应用程序传播成功率。
在一个实施例中,上述检测用户使用应用程序的方法还包括:将所述用户标识、所
述用户标识对应的应用程序标识,以及各应用程序标识对应的应用程序每次使用时长上传
到服务器;接收所述服务器推送的与用户标识对应的常用应用程序同类的应用程序信息,
常用应用程序是指按照累计使用时长从高到低选取的预定数量的应用程序或累计使用时
长超过时长阈值的应用程序。
本实施例中,服务器根据接收到的用户标识、对应的应用程序及使用时长,可得到
各应用程序的累计使用时长,根据累计使用时长得到常用应用程序,选取常用应用程序同
类的应用程序,将该同类的应用程序信息推送给用户,达到精准推荐应用程序的目的,提高
应用程序传播成功率。
在一个实施例中,上述检测用户使用应用程序的方法还包括:将所述用户标识、所
述用户标识对应的应用程序标识,以及各应用程序标识对应的应用程序每次使用时长上传
到服务器;接收所述服务器推送的累计使用时长超过预设时长的应用程序的同类的应用程
序信息,以及接收所述服务器推送的与用户标识对应的常用应用程序同类的应用程序信
息,常用应用程序是指按照累计使用时长从高到低选取的预定数量的应用程序或累计使用
时长超过时长阈值的应用程序。
图7为另一个实施例中检测用户使用应用程序的方法的流程图。如图7所示,一种
检测用户使用应用程序的方法,运行于服务器上,包括:
步骤702,接收用户终端上传的用户标识、所述用户标识对应的应用程序、各应用
程序对应的每次使用时长,其中,所述各应用程序对应的每次使用时长是通过挂钩函数监
测管理运行应用程序堆栈的栈顶中的应用程序,并判断本次检测的应用程序与相邻上一次
检测的应用程序是否相同,若所述本次检测的应用程序与相邻上一次检测的应用程序不
同,获取上一次检测不同时所记录的第一时刻以及本次检测的第二时刻,根据所述第一时
刻和第二时刻所获取的所述相邻上一次检测的应用程序的使用时长。
步骤704,统计预设时间内所述用户标识对应的各应用程序的累计使用时长。
上述检测用户使用应用程序的方法,接收用户终端上传的用户标识、用户标识对
应的应用程序、各应用程序对应的每次使用时长,各应用程序对应的每次使用时长是通过
挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序,当本次检测的应用程序与相邻
上一次检测的应用程序不同时,获取到上一次检测不同时所记录的第一时刻和本次检测的
第二时刻,可以得到相邻上一次检测的应用程序的使用时长,通过检测栈顶中应用程序的
变化得到的应用程序的使用时长,因栈顶中的应用程序时用户当前正在使用的应用程序,
如此检测得到的应用程序的使用时长准确性高,在预设时间内统计得到的应用程序的累计
使用时长准确性也高。
在一个实施例中,各应用程序对应的每次使用时长是通过记录所述栈顶中应用程
序的开始使用时刻;按照指定间隔时间对所述栈顶发起轮询,获取所述栈顶中的应用程序;
判断本次轮询的应用程序与相邻上一次轮询的应用程序是否相同;若本次轮询的应用程序
与相邻上一次轮询的应用程序不同,则记录本次轮询的时刻,根据所述上一次轮询的应用
程序的开始使用时刻与本次轮询的时刻获取所述上一次轮询的应用程序的使用时长。
在一个实施例中,上述检测用户使用应用程序的方法还包括:按照所述累计使用
时长从高到低筛选出预定数量的应用程序或所述累计使用时长超过时长阈值的应用程序
作为与所述用户标识对应的常用应用程序。
本实施例中,预定数量可根据需要设定,如1个、2个、3个、4个、5个、6个等。用户标
识对应的常用应用程序是指用户标识在用户终端上经常使用的应用程序。时长阈值可根据
需要设定,如1个星期、1个月、3个月等。
在一个实施例中,上述检测用户使用应用程序的方法还包括:接收包含用户标识
的应用程序恢复请求;根据所述应用程序恢复请求中的用户标识查找到与所述用户标识对
应的常用应用程序;将所述常用应用程序返回给所述发起应用程序恢复请求的用户标识所
在的用户终端。
图8为用户终端上展示的用户常用应用程序的示意图。如图8所示,用户常用应用
程序包括视频播放器A、即时通信应用程序B、移动终端管家C、应用市场D等。
本实施例中,在用户换新的终端设备或已有的设备被恢复出厂设置后,需要重新
安装所需应用程序时,可通过用户标识登录应用程序管理客户端,发送应用程序恢复请求,
服务器上的应用程序管理服务端接收到包含用户标识的应用程序恢复请求,查找到与用标
识对应的常用应用程序,将常用应用程序的安装包或安装信息(包括下载地址等)返回给发
起应用程序恢复请求的用户标识所在的用户终端,在用户终端上安装用户常用应用程序,
实现了优先恢复用户常用应用程序,提高了用户的更换终端的效率,降低了更换终端的迁
移成本,提供了良好的数据恢复体验。
在一个实施例中,上述检测用户使用应用程序的方法还包括:接收包含用户标识
的应用程序恢复请求;根据所述应用程序恢复请求中的用户标识查找到与所述用户标识对
应的常用应用程序,以及获取所述用户标识预选的应用程序;将所述常用应用程序及所述
用户标识预选的应用程序返回给所述发起应用程序恢复请求的用户标识所在的用户终端。
本实施例中,预选的应用程序是指用户预先设置的所需应用程序。
在用户换新的终端设备或已有的设备被恢复出厂设置后,需要重新安装所需应用
程序时,可通过用户标识登录应用程序管理客户端,发送应用程序恢复请求,服务器上的应
用程序管理服务端接收到包含用户标识的应用程序恢复请求,查找到与用标识对应的常用
应用程序,同时获取到用户预选的应用程序,将常用应用程序和预先的应用程序的安装包
或安装信息返回给发起应用程序恢复请求的用户标识所在的用户终端,在用户终端上安装
用户常用应用程序,实现了优先恢复用户常用应用程序,提高了用户的更换终端的效率,降
低了更换终端的迁移成本,提供了良好的数据恢复体验。
在一个实施例中,上述检测用户使用应用程序的方法还包括:根据所述用户标识
对应的各应用程序的累计使用时长筛选出累计使用时长超过预设时长的应用程序;获取与
所述累计使用时长超过预设时长的应用程序同类的应用程序信息,并将所述同类的应用程
序信息推送给所述用户标识所在的用户终端。
本实施例中,服务器根据接收到的用户标识、对应的应用程序及使用时长,可得到
各应用程序的累计使用时长,根据累计使用时长与预设时长比较,得到超过预设时长的应
用程序,选取超过预设时长的应用程序同类的应用程序,将该同类的应用程序信息推送给
用户,达到精准推荐应用程序的目的,提高应用程序传播成功率。
在一个实施例中,上述检测用户使用应用程序的方法还包括:获取用户标识对应
的常用应用程序同类的应用程序信息,将用户标识对应的常用应用程序同类的应用程序信
息推送给用户标识所在的用户终端。
本实施例中,服务器根据接收到的用户标识、对应的应用程序及使用时长,可得到
各应用程序的累计使用时长,根据累计使用时长得到常用应用程序,选取常用应用程序同
类的应用程序,将该同类的应用程序信息推送给用户,达到精准推荐应用程序的目的,提高
应用程序传播成功率。
在一个实施例中,上述检测用户使用应用程序的方法还包括:根据所述用户标识
对应的各应用程序的累计使用时长筛选出累计使用时长超过预设时长的应用程序;获取与
所述累计使用时长超过预设时长的应用程序同类的应用程序信息,并将所述同类的应用程
序信息推送给所述用户标识所在的用户终端;以及获取用户标识对应的常用应用程序同类
的应用程序信息,将用户标识对应的常用应用程序同类的应用程序信息推送给用户标识所
在的用户终端。
图9为一个实施例中检测用户使用应用程序的装置的结构框图。如图9所示,一种
检测用户使用应用程序的装置,运行于用户终端,包括监测模块902、第一判断模块904、第
一单次时长获取模块906、统计模块908。其中:
监测模块902用于通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程
序。
第一判断模块904用于判断本次检测的应用程序与相邻上一次检测的应用程序是
否相同。
第一判断模块904还用于获取本次检测的应用程序标识和相邻上一次检测的应用
程序标识,判断本次检测的应用程序标识和相邻上一次检测的应用程序标识是否相同。
第一单次时长获取模块906用于若所述本次检测的应用程序与相邻上一次检测的
应用程序不同,则获取上一次检测不同时所记录的第一时刻以及本次检测的第二时刻,根
据所述第一时刻和第二时刻获取所述相邻上一次检测的应用程序的使用时长。
统计模块908用于获取用户标识,统计预设时间内所述用户标识对应的各应用程
序的累计使用时长。
上述检测用户使用应用程序的装置,通过挂钩函数监测管理运行应用程序堆栈的
栈顶中的应用程序,当本次检测的应用程序与相邻上一次检测的应用程序不同时,获取到
上一次检测不同时所记录的第一时刻和本次检测的第二时刻,可以得到相邻上一次检测的
应用程序的使用时长,通过检测栈顶中应用程序的变化得到的应用程序的使用时长,因栈
顶中的应用程序时用户当前正在使用的应用程序,如此检测得到的应用程序的使用时长准
确性高,在预设时间内统计得到的应用程序的累计使用时长准确性也高。
图10为另一个实施例中检测用户使用应用程序的装置的结构框图。如图10所示,
一种检测用户使用应用程序的装置,运行于用户终端,除了包括监测模块902、第一判断模
块904、第一单次时长获取模块906、统计模块908,还包括筛选模块910、记录模块912、轮询
模块914、第二判断模块916、第二单次时长获取模块918、权限检测模块920、权限策略请求
模块922、权限策略接收模块924、上传模块926、信息接收模块928。其中:
筛选模块910用于按照所述累计使用时长从高到低筛选出预定数量的应用程序或
所述累计使用时长超过时长阈值的应用程序作为与所述用户标识对应的常用应用程序。
记录模块912用于当通过挂钩函数挂钩所述管理运行应用程序堆栈的接口失败
时,记录所述栈顶中应用程序的开始使用时刻。
轮询模块914用于按照指定间隔时间对所述栈顶发起轮询,获取所述栈顶中的应
用程序。
第二判断模块916用于判断本次轮询的应用程序与相邻上一次轮询的应用程序是
否相同。
记录模块912还用于若本次轮询的应用程序与相邻上一次轮询的应用程序不同,
则记录本次轮询的时刻。
第二单次时长获取模块918用于根据所述上一次轮询的应用程序的开始使用时刻
与本次轮询的时刻获取所述上一次轮询的应用程序的使用时长,并将所述本次轮询的时刻
作为所述本次轮询的应用程序的开始使用时刻;
轮询模块914还用于若本次轮询的应用程序与相邻上一次轮询的应用程序相同,
则继续按照指定间隔时间对所述栈顶发起轮询,获取所述栈顶中的应用程序。
权限检测模块920用于在通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应
用程序之前,检测是否具有超级管理权限;
监测模块902还用于若具有超级管理权限,则通过挂钩函数监测管理运行应用程
序堆栈的栈顶中的应用程序;
记录模块912还用于若不具有超级管理权限,记录所述栈顶中应用程序的开始使
用时刻,所述轮询模块还用于按照指定间隔时间对所述栈顶发起轮询获取所述栈顶中的应
用程序。
权限检测模块920用于在通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应
用程序之前,检测是否具有超级管理权限。
监测模块902还用于若具有超级管理权限,则通过挂钩函数监测管理运行应用程
序堆栈的栈顶中的应用程序。
权限检测模块920还用于若不具有超级管理权限,则检测用户终端是否具有临时
的超级管理权限。
监测模块902还用于若具有临时的超级管理权限,则通过挂钩函数监测管理运行
应用程序堆栈的栈顶中的应用程序。
权限策略请求模块922用于若不具有临时的超级管理权限,则向服务器发起获取
临时的超级管理权限策略的请求。
权限策略接收模块924用于接收所述服务器返回的临时的超级管理权限策略。
监测模块902还用于若根据所述临时的超级管理权限策略获取临时的超级管理权
限成功,通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序;
记录模块912还用于若根据所述临时的超级管理权限策略获取临时的超级管理权
限失败,记录所述栈顶中应用程序的开始使用时刻,所述轮询模块914还用于按照指定间隔
时间对所述栈顶发起轮询,获取所述栈顶中的应用程序。
上传模块926用于将所述用户标识、所述用户标识对应的应用程序标识,以及各应
用程序标识对应的应用程序每次使用时长上传到服务器。
信息接收模块928用于接收所述服务器推送的累计使用时长超过预设时长的应用
程序的同类的应用程序信息,和/或,接收所述服务器推送的与用户标识对应的常用应用程
序同类的应用程序信息,所述常用应用程序是指按照累计使用时长从高到低选取的预定数
量的应用程序或累计使用时长超过时长阈值的应用程序。
在其他实施例中,一种检测用户使用应用程序的装置,可包括监测模块902、第一
判断模块904、第一单次时长获取模块906、统计模块908、筛选模块910、记录模块912、轮询
模块914、第二判断模块916、第二单次时长获取模块918、权限检测模块920、权限策略请求
模块922、权限策略接收模块924、上传模块926、信息接收模块928任意可能的组合。
图11为另一个实施例中检测用户使用应用程序的装置的结构框图。如图11所示,
一种检测用户使用应用程序的装置,包括数据接收模块1102、累计模块1104。
数据接收模块1102用于接收用户终端上传的用户标识、所述用户标识对应的应用
程序、各应用程序对应的每次使用时长,其中,所述各应用程序对应的每次使用时长是所述
用户终端通过挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序,并判断本次检测
的应用程序与相邻上一次检测的应用程序是否相同,若所述本次检测的应用程序与相邻上
一次检测的应用程序不同,获取上一次检测不同时所记录的第一时刻以及本次检测的第二
时刻,根据所述第一时刻和第二时刻所获取的所述相邻上一次检测的应用程序的使用时
长。
累计模块1104用于统计预设时间内所述用户标识对应的各应用程序的累计使用
时长。
上述检测用户使用应用程序的装置,接收用户终端上传的用户标识、用户标识对
应的应用程序、各应用程序对应的每次使用时长,各应用程序对应的每次使用时长是通过
挂钩函数监测管理运行应用程序堆栈的栈顶中的应用程序,当本次检测的应用程序与相邻
上一次检测的应用程序不同时,获取到上一次检测不同时所记录的第一时刻和本次检测的
第二时刻,可以得到相邻上一次检测的应用程序的使用时长,通过检测栈顶中应用程序的
变化得到的应用程序的使用时长,因栈顶中的应用程序时用户当前正在使用的应用程序,
如此检测得到的应用程序的使用时长准确性高,在预设时间内统计得到的应用程序的累计
使用时长准确性也高。
图12为另一个实施例中检测用户使用应用程序的装置的结构框图。如图12所示,
一种检测用户使用应用程序的装置,除了包括数据接收模块1102、累计模块1104,还包括第
一筛取模块1106、恢复请求接收模块1108、查找模块1110、返回模块1112、第二筛取模块
1114和推送模块1116。
第一筛取模块1106用于按照所述累计使用时长从高到低筛选出预定数量的应用
程序或所述累计使用时长超过时长阈值的应用程序作为与所述用户标识对应的常用应用
程序。
恢复请求接收模块1108用于接收包含用户标识的应用程序恢复请求;
查找模块1110用于根据所述应用程序恢复请求中的用户标识查找到与所述用户
标识对应的常用应用程序;
返回模块1112用于将所述常用应用程序返回给所述发起应用程序恢复请求的用
户标识所在的用户终端。
在其他实施例中,恢复请求接收模块1108用于接收包含用户标识的应用程序恢复
请求。
查找模块1110用于根据所述应用程序恢复请求中的用户标识查找到与所述用户
标识对应的常用应用程序,以及获取所述用户标识预选的应用程序。
返回模块1112用于将所述常用应用程序及所述用户标识预选的应用程序返回给
所述发起应用程序恢复请求的用户标识所在的用户终端。
第二筛取模块1114用于根据所述用户标识对应的各应用程序的累计使用时长筛
选出累计使用时长超过预设时长的应用程序。
推送模块1116用于获取与所述累计使用时长超过预设时长的应用程序同类的应
用程序信息,并将所述同类的应用程序信息推送给所述用户标识所在的用户终端,和/或,
获取用户标识对应的常用应用程序同类的应用程序信息,将所述用户标识对应的常用应用
程序同类的应用程序信息推送给所述用户标识所在的用户终端,所述常用应用程序是指按
照累计使用时长从高到低选取的预定数量的应用程序或累计使用时长超过时长阈值的应
用程序。
在其他实施例中,一种检测用户使用应用程序的装置,运行于服务器上,可包括数
据接收模块1102、累计模块1104、第一筛取模块1106、恢复请求接收模块1108、查找模块
1110、返回模块1112、第二筛取模块1114和推送模块1116任意可能的组合。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以
通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取
存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介
质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并
不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员
来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保
护范围。因此,本发明专利的保护范围应以所附权利要求为准。