本发明实施例涉及计算机技术,尤其涉及一种应用程序使用数据的获取方法、装置及终端设备。
背景技术:
安卓(Android)系统通过使用统计服务(UsageStatsService)功能,对用户使用终端设备上的各个应用程序(Application,简称:APP)的情况进行统计,获取应用程序使用数据,并将应用程序使用数据保存到“/data/system/usagestats”目录下。该应用程序使用数据包括:用户使用各个APP的时间、时长、频率等。
在采用安卓系统的终端设备中,只有系统(system)应用才能获取到上述应用程序使用数据,第三方应用程序无权直接调用上述使用统计服务,也无权访问上述“/data/system/usagestats”目录。对于第三方应用程序,只能在底层(root)状态下去访问“/data/system/usagestats”目录,并对该目录下的应用程序使用数据进行解析,因此,应用程序使用数据的获取效率低下。
技术实现要素:
本发明实施例提供一种应用程序使用数据的获取方法、装置及终端设备,以提高应用程序使用数据的获取效率。
本发明实施例提供一种应用程序使用数据的获取方法,包括:
获取第一触发事件,所述第一触发事件用于指示终端设备亮屏;
根据所述第一触发事件,从所述终端设备亮屏开始,每隔预设监测周期读取一次系统信息,并根据所述系统信息确定正在使用的APP,所述系统信息包括位于运行时间栈的栈顶的APP的信息或者所述终端设备中的APP的运行优先级;
根据系统时间和所述正在使用的APP统计预设时间范围内各个APP的使 用次数、累计使用时长、使用时间段及各个所述使用时间段内的使用次数和使用时长,所述时间段为预设时长的时间分段,以获取应用程序使用数据。
本发明实施例提供一种应用程序使用数据的获取装置,包括:
事件获取模块,用于获取第一触发事件,所述第一触发事件用于指示终端设备亮屏;
读取模块,用于根据所述第一触发事件,从所述终端设备亮屏开始,每隔预设监测周期读取一次系统信息,并根据所述系统信息确定正在使用的APP,所述系统信息包括位于运行时间栈的栈顶的APP的信息或者所述终端设备中的APP的运行优先级;
统计模块,用于根据系统时间和所述正在使用的APP统计预设时间范围内各个APP的使用次数、累计使用时长、使用时间段及各个所述使用时间段内的使用次数和使用时长,所述时间段为预设时长的时间分段,以获取应用程序使用数据。
本发明实施例提供一种终端设备,其特征在于,包括:处理器和存储器;其中,所述处理器用于执行上述应用程序使用数据的获取方法;所述存储器用于存储所述处理器可执行的指令,以及应用程序使用数据。
本发明实施例应用程序使用数据的获取方法、装置及终端设备,通过每隔预设监测周期读取系统信息,并根据系统信息确定正在使用的APP,再根据系统时间和正在使用的APP统计获取到应用程序使用数据,提高应用程序使用数据的获取效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所应用的终端设备的结构示意图;
图2为本发明应用程序使用数据的获取方法的一个实施例的流程图;
图3为终端设备亮屏示意图;
图4为用户使用APP的界面示意图;
图5为本发明应用程序使用数据的获取方法的另一个实施例的流程图;
图6为本发明应用程序使用数据的获取装置的一个实施例的结构示意图;
图7为本发明应用程序使用数据的获取装置的另一个实施例的结构示意图;
图8为本发明应用程序使用数据的获取装置的又一个实施例的结构示意图;
图9为本发明应用程序使用数据的获取装置的第四个实施例的结构示意图;
图10示出的是与本发明实施例提供的终端设备相关的手机的部分结构的框图。
具体实施方式
为了解决上述问题,本发明提出了一种新的图案锁的设置方法。为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
图1为本发明所应用的终端设备的结构示意图,如图1所示,本实施例的终端设备可以包括:处理器11,例如中央处理器(Central Processing Unit,简称:CPU),存储器12,至少一个通信总线13以及运行在硬件之上的操作系统14。通信总线13用于实现元件之间的通信连接。存储器12可能包含高速随机存取存储器(Random Access Memory,简称:RAM)存储器,也可能还包括非易失性存储器非易失存储器(NonVolatile Memory,简称:NVM), 例如至少一个磁盘存储器,存储器中可以存储各种程序,用于完成各种处理功能以及实现本实施例的方法步骤。
本领域技术人员可以理解的是,图1所示终端设备还可以包含其余各种可能的元件,例如天线、无线通信模块等等,本发明不做限定。而且,本实施例的终端设备例如可以是智能手机、平板电脑等各种终端设备的,本发明同样不做限定。可以按照个人习惯对终端设备进行设置,例如安全设置(包括锁屏密码设置、锁屏时间设置等),也可以在终端设备上安装各种应用程序(Application,简称:APP),该APP,既可以是终端设备在出厂时自带的应用程序,也可以是用户从互联网上下载安装到终端设备上的应用程序,本实施例对APP的来源和形式不做限定。该APP的相关程序代码即可存储在图1所示终端设备的存储器12中。
当需要统计用户使用终端设备上的APP信息时,处理器11可以从存储器12获取可执行指令,记录APP的启动时间、结束时间及使用时长,通过统计这些时间信息获取用户使用APP的操作信息,分析出用户对APP的使用习惯、偏好等,以便向用户推送相关信息,使用户获得良好的用户体验。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本发明应用程序使用数据的获取方法的一个实施例的流程图,如图2所示,本实施例的执行主体可以是图1所示的终端设备,终端设备通过本实施例的方法实现用户使用APP的统计,本实施例的方法可以包括:
步骤101、获取第一触发事件,所述第一触发事件用于指示终端设备亮屏;
通常情况下,终端设备亮屏表示用户点击了终端设备上的相关按键,例如HOME键,通过该点击操作触发了终端设备的屏幕点亮,图3为终端设备亮屏示意图,如图3所示,终端屏幕点亮后用户可以通过点击屏幕上的图标,启动某个终端设备上安装的APP,图4为用户使用APP的界面示意图,如图4所示,例如用户正在使用社交APP,此时终端设备屏幕上显示的正是该社交APP的界面。只要用户开始对终端设备开始进行操作,首先就需要将终端设备从休眠状态唤醒,相应的终端设备从黑屏变为亮屏,终端设备获取到一 个触发事件,该触发事件正是指示终端设备亮屏。
步骤102、根据所述第一触发事件,从所述终端设备亮屏开始,每隔预设监测周期读取一次系统信息,并根据所述系统信息确定正在使用的APP,所述系统信息包括位于运行时间栈的栈顶的APP的信息或者所述终端设备中的APP的运行优先级;
本发明为了统计用户使用各个APP的时间、时长、频率等,终端设备从一亮屏就开始进行监测,而且是周期性地监测,预设监测周期例如可以是1秒、500毫秒等。
每隔预设监测周期终端设备确定一次用户正在使用的APP,例如,用户正在使用微信、QQ、读书APP等。本实施例中可以认为正在使用的APP就是显示在终端设备屏幕上的APP,终端设备读取系统信息,根据系统信息确定是哪个APP正处于终端设备屏幕上。终端设备读取系统信息的过程可以有以下具体的实现方法:
第一种:终端设备操作系统的运行时间栈是一个记录APP的运行状态的数据结构,每当用户使用某一个APP时,该APP的信息就被压入运行时间栈的栈顶,因此终端设备可以从该运行时间栈的栈顶获取到一个APP的信息,该APP的信息对应的就是正在使用的APP。对于Android系统的终端设备,该方法适用于Android系统5.0之前的版本,在这类版本中,RunningTask就是所述运行时间栈,位于RunningTask栈顶的就是监测周期内正在使用的APP的信息。
第二种:运行优先级也是终端设备操作系统中一个记录终端设备中的APP的运行状态的标识,当APP正在被使用时,其运行优先级最高,通常用户在操作终端设备时,可能会启动多个APP,如果用户不执行关闭操作,这些APP除了正在使用的都处于终端设备后台中,即用户正在使用的APP只有一个,其余的虽然没有关闭,但由于没有被用户使用只是处于后台中。因此终端设备将操作系统的运行优先级中最高优先级对应的APP确定为正在使用的APP。对于Android系统的终端设备,该方法适用于Android系统5.0之后的版本,在这类版本中,根据RunningProcess获取当前没有关闭的APP,然后判断没有关闭的APP的importance值,其中importance=FOREGROUND表明其对应的APP即为最高优先级的APP。
每次监测都可以对应一个系统时间,例如,如果监测时正在使用的APP是从当前预设监测周期才开始启动的,则可以根据系统时间记录该APP的启动时间,如果正在使用的APP是从之前的某次监测时就确定已经启动了,则可以对该APP的使用时长做一个累加。终端设备可以将监测的系统时间和正在使用的APP以日期和记录时间为标识进行记录,在第一预设时间,例如每天的某一个时间,或者每隔一天、几个小时,从终端设备的内存保存到数据库中,也可以在第二预设时间上报给服务器,或者以正在使用的APP的变更作为触发上报的条件,对于本领域技术人员都可以很容易想到数据保存和上报的惯用技术手段,本发明不做具体限定。
步骤103、根据系统时间和所述正在使用的APP统计预设时间范围内各个APP的使用次数、累计使用时长、使用时间段及各个所述使用时间段内的使用次数和使用时长,所述时间段为预设时长的时间分段,以获取应用程序使用数据。
终端设备在每次监测时,可以先通过下述方法记录正在使用的APP的启动时间、结束时间或使用时长:若正在使用的APP与上一次监测时正在使用的APP不相同,则将本次监测的起始时间记录为正在使用的APP的启动时间,并将正在使用的APP的使用时长记录为一个预设监测周期的时长;若正在使用的APP与上一次监测时正在使用的APP相同,则将正在使用的APP的使用时长累加一个预设监测周期的时长;若正在使用的APP与下一次监测时正在使用的APP不相同,则将本次监测的结束时间记录为正在使用的APP的结束时间。
例如,本次监测标号为2,上一次监测标号为1,下一次监测标号为3。在2时正在使用的APP与在1时正在使用的APP不相同,说明在1和2之间用户更换了使用的APP,那么在2时需要重新记录正在使用的APP,以及该APP的启动时间和使用时长;在2时正在使用的APP与在1时正在使用的APP相同,说明用户从1到2一直使用的APP没有变化,那么在2时只需要对使用中的APP的使用时长做累加即可;在2时正在使用的APP与在3时正在使用的APP不相同,说明在2和3之间用户更换了使用的APP,那么在2时需要记录一下正在使用的APP的结束时间并对使用时长做一个累加,从3开始则记录另一个APP的启动时间和使用时长。
终端设备积累了每次监测的系统时间和正在使用的APP,对其进行统计以获取应用程序使用数据。
经过上述每隔预设监测周期读取一次系统信息,可以确定出至少一次监测时间点上正在使用的APP,根据至少一次监测时间点的系统时间和正在使用的APP进行统计,统计时间例如可以是每天的某个固定时间、每个月的某个固定日期,在统计时间对先前监测记录下来的系统时间和正在使用的APP做一个归纳,从而统计获取到各APP每天或每月被使用的次数、累计使用的时长,还可以以一小时为单位,统计各APP在哪几个小时内被使用过,每个小时内各APP的使用次数和使用时长。例如,每天凌晨零点进行统计,得出微信、QQ、读书APP、浏览器等分别在一天内的使用次数、累计使用时长,分别在一天中哪个时间段(哪几个小时)中被使用,每个时间段(每小时)内启动的次数和使用时长。
本实施例,通过每隔预设监测周期读取系统信息,并根据系统信息确定正在使用的APP,再根据系统时间和正在使用的APP统计获取到应用程序使用数据,提高应用程序使用数据的获取效率。
进一步的,上述步骤103之后,还包括:获取第二触发事件,所述第二触发事件用于指示所述终端设备黑屏,根据所述第二触发事件终止读取所述系统信息。
通常用户不对终端设备进行操作后,终端设备会进入锁屏状态,此时终端设备获取到另一个触发事件,该触发事件正是指示所述终端设备黑屏,根据该第二触发事件终端设备就不需要再做监测,因此可以终止读取系统信息,从而减少终端设备后台程序的运行,降低终端设备电量消耗。而在终端设备终止读取系统信息前,需要先确定终端设备黑屏时是否还有APP正在使用中,例如,用户正在使用微信时需要锁屏做别的事情,那么终端设备黑屏时,在屏幕上仍然是微信的界面,此时需要将锁屏时对应的预设监测周期的时间更新为微信的结束时间,并累加使用时长。
优选的,在获取到应用程序使用数据后,终端设备可以在第一预设时间将所述应用程序使用数据存入数据库中,以作长期的数据保存,或者在第二预设时间将所述应用程序使用数据上报给服务器,以使服务器做一个数据积累和统计。
图5为本发明应用程序使用数据的获取方法的另一个实施例的流程图,如图5所示,本实施例的执行主体可以是图1所示的终端设备,终端设备通过本实施例的方法实现用户使用APP的统计,本实施例的方法在图2所示方法的基础上,可以包括:
步骤201、根据第一触发事件记录每次终端设备亮屏的时间;
步骤202、根据至少一次所述终端设备亮屏的时间统计用户解锁的次数和频率;
步骤203、根据第二触发事件记录每次终端设备黑屏的时间;
步骤204、根据至少一次所述终端设备黑屏的时间统计用户锁屏的次数和频率。
步骤201-202与步骤203-204是分别记录和统计终端设备亮屏和黑屏的时间信息的,二者的没有明确的先后顺序。终端亮屏表示用户对终端设备进行解锁,终端黑屏表示用户对终端设备进行锁屏,通过统计一段时间内(例如一天、几个小时、半天等)用户解锁的次数和频率和用户锁屏的次数和频率,可以分析出用户对终端设备的依赖程度和使用习惯等。
图6为本发明应用程序使用数据的获取装置的一个实施例的结构示意图,如图6所示,本实施例的装置可以包括:事件获取模块21、读取模块22和统计模块23,其中,事件获取模块21,用于获取第一触发事件,所述第一触发事件用于指示终端设备亮屏;读取模块22,用于根据所述第一触发事件,从所述终端设备亮屏开始,每隔预设监测周期读取一次系统信息,并根据所述系统信息确定正在使用的APP,所述系统信息包括位于运行时间栈的栈顶的APP的信息或者所述终端设备中的APP的运行优先级;统计模块23,用于根据系统时间和所述正在使用的APP统计预设时间范围内各个APP的使用次数、累计使用时长、使用时间段及各个所述使用时间段内的使用次数和使用时长,所述时间段为预设时长的时间分段,以获取应用程序使用数据。
本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图7为本发明应用程序使用数据的获取装置的另一个实施例的结构示意图,如图7所示,本实施例的装置在图6所示装置结构的基础上,进一步地,还可以包括:终止模块24。事件获取模块21,还用于获取第二触发事件,所 述第二触发事件用于指示所述终端设备黑屏;终止模块24,用于根据所述第二触发事件终止读取所述系统信息。
本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图8为本发明应用程序使用数据的获取装置的又一个实施例的结构示意图,如图8所示,本实施例的装置在图7所示装置结构的基础上,进一步地,还可以包括:解锁统计模块25和锁屏统计模块26,其中,解锁统计模块25,用于根据所述第一触发事件记录每次所述终端设备亮屏的时间;根据至少一次所述终端设备亮屏的时间统计用户解锁的次数和频率;锁屏统计模块26,用于根据所述第二触发事件记录每次所述终端设备黑屏的时间;根据至少一次所述终端设备黑屏的时间统计用户锁屏的次数和频率。
本实施例的装置,可以用于执行图5所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图9为本发明应用程序使用数据的获取装置的第四个实施例的结构示意图,如图9所示,本实施例的装置在图6所示装置结构的基础上,进一步地,还可以包括:数据处理模块27,用于在第一预设时间将所述应用程序使用数据存入数据库中;在第二预设时间将所述应用程序使用数据上报给服务器。
本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例提供的终端设备可以手机、平板电脑、个人数字助理(Personal Digital Assistant,简称:PDA)等,以终端设备为手机为例:图10示出的是与本发明实施例提供的终端设备相关的手机的部分结构的框图。参考图10,手机包括:射频(Radio Frequency,简称:RF)电路10、存储器20、输入单元30、显示单元40、传感器50、音频电路60、无线保真(wireless fidelity,简称:WiFi)模块70、处理器80、以及电源90等部件。本领域技术人员可以理解,图10中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图10对手机的各个构成部件进行具体的介绍:
RF电路10可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器80处理;另外,将设计上行的数据发送 给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise Amplifier,简称:LNA)、双工器等。此外,RF电路10还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communication,简称:GSM)、通用分组无线服务(General Packet Radio Service,简称:GPRS)、码分多址(Code Division Multiple Access,简称:CDMA)、宽带码分多址(Wideband Code Division Multiple Access,简称:WCDMA)、长期演进(Long Term Evolution,简称:LTE))、电子邮件、短消息服务(Short Messaging Service,简称:SMS)等。
存储器20可用于存储软件程序以及模块,处理器80通过运行存储在存储器20的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器20可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元30可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元30可包括触控面板31以及其他输入设备32。触控面板31,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板31上或在触控面板31附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板31可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器80,并能接收处理器80发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板31。除了触控面板31,输入单元30还可以包括其他输入设备32。具体地,其他输入设备32可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元40可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元40可包括显示面板41,可选的,可以采用液晶显示器(Liquid Crystal Display,简称:LCD)、有机发光二极管(Organic Light-Emitting Diode,简称:OLED)等形式来配置显示面板41。进一步的,触控面板31可覆盖显示面板41,当触控面板31检测到在其上或附近的触摸操作后,传送给处理器80以确定触摸事件的类型,随后处理器80根据触摸事件的类型在显示面板41上提供相应的视觉输出。虽然在图中,触控面板31与显示面板41是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板31与显示面板41集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器50,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板41的亮度,接近传感器可在手机移动到耳边时,关闭显示面板41和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路60、扬声器61,传声器62可提供用户与手机之间的音频接口。音频电路60可将接收到的音频数据转换后的电信号,传输到扬声器61,由扬声器61转换为声音信号输出;另一方面,传声器62将收集的声音信号转换为电信号,由音频电路60接收后转换为音频数据,再将音频数据输出处理器80处理后,经RF电路10以发送给比如另一手机,或者将音频数据输出至存储器20以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块70可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图示出了WiFi模块70,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器80是手机的控制中心,利用各种接口和线路连接整个手机的各个 部分,通过运行或执行存储在存储器20内的软件程序和/或模块,以及调用存储在存储器20内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器80可包括一个或多个处理单元;优选的,处理器80可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器80中。
手机还包括给各个部件供电的电源90(比如电池),优选的,电源可以通过电源管理系统与处理器80逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该终端设备所包括的处理器80还具有以下功能:获取第一触发事件,所述第一触发事件用于指示终端设备亮屏;根据所述第一触发事件,从所述终端设备亮屏开始,每隔预设监测周期读取一次系统信息,并根据所述系统信息确定正在使用的APP,所述系统信息包括位于运行时间栈的栈顶的APP的信息或者所述终端设备中的APP的运行优先级;根据系统时间和所述正在使用的APP统计预设时间范围内各个APP的使用次数、累计使用时长、使用时间段及各个所述使用时间段内的使用次数和使用时长,所述时间段为预设时长的时间分段,以获取应用程序使用数据。
关于本发明的终端设备为上述的手机时,手机如何对图案锁进行设置,可以参见上述图案锁的设置方法实施例的详细描述,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。