监控应用运行状态的方法、装置、存储介质及电子设备与流程

文档序号:14735853发布日期:2018-06-19 20:28阅读:174来源:国知局
监控应用运行状态的方法、装置、存储介质及电子设备与流程

本公开涉及应用优化领域,具体地,涉及一种监控应用运行状态的方法、装置、存储介质及电子设备。



背景技术:

对应用程序的状态进行监控主要是为了向程序开发者提供运营数据以更好的改善用户体验。目前对应用程序的监控主要包括对应用生命周期,点击事件等的监控。

目前,现有的相关技术中,大多数通过手动埋点的方式对应用程序进行监控,即将监控逻辑混入到应用各个代码片段中。值得说明的是,应用程序的编程可以分为两类:系统编程和应用编程。所谓系统编程,简单来说,就是编写库;而应用编程就是利用写好的各种库来编写具某种功用的程序,也就是应用。相关技术将监控代码写在应用编程的代码中,致使监控逻辑和业务逻辑混杂在一起,耦合度高,进而导致监控逻辑可能影响正常业务逻辑的运行,而且监控逻辑无法复用。



技术实现要素:

本公开的主要目的是提供一种监控应用运行状态的方法、装置、存储介质及电子设备,以解决相关技术中监控逻辑和业务逻辑耦合度高的问题。

为了实现上述目的,本公开第一方面提供一种监控应用程序运行的方法,应用于电子设备,所述方法包括:

在所述应用程序创建的过程中,调用所述应用程序的Application类,以完成Application类的初始化;

其中,所述Application类包括用于监控所述应用程序的运行状态的回调函数包,所述Application类的初始化包括:执行所述回调函数包的初始化init函数,以完成对所述回调函数包内所有回调函数的注册;

其中,每一所述回调函数包括触发事件以及对应所述触发事件的监控操作,每一已注册的所述回调函数用于,在所述应用程序发生所述触发事件时,调用已注册的所述回调函数以执行对应所述触发事件的监控操作。

可选地,所述回调函数包包括用于监控所述应用程序的生命周期的第一类回调函数和/或监控所述应用程序页面的触控事件的第二类回调函数。

可选地,所述回调函数包包括用于监控所述应用程序的生命周期的第一类回调函数,所述方法还包括:

在所述应用程序运行过程中,若发生已注册的所述第一类回调函数的触发事件,则调用已注册的所述第一类回调函数,以执行所述触发事件对应的生命周期监控操作。

可选地,所述回调函数包包括用于监控所述应用程序页面的触控事件的第二类回调函数,所述第二类回调函数包括触控事件监控注册函数以及触控事件监控函数,所述方法还包括:

在所述应用程序运行过程中,若发生页面生成事件,则调用所述触控事件监控注册函数,以遍历所述页面内的每一view,并注册对应每一view的所述触控事件监控函数。

可选地,所述电子设备为运行安卓系统的电子设备,所述触控事件监控函数继承的安卓系统的AccesibilityDelegate类,其中,安卓系统在所述应用程序发生触控事件时,调用所述AccesibilityDelegate类。

可选地,所述方法还包括:

在所述应用程序生成页面后,若检测到针对目标view的触控操作,则调用对应所述目标view的触控事件监控函数,以执行对应所述触发操作的监控操作。

第二方面,提供一种监控应用程序运行的装置,应用于电子设备,所述装置包括:

应用初始创建模块,用于在所述应用程序创建的过程中,调用所述应用程序的Application类,以完成Application类的初始化;

其中,所述Application类包括用于监控所述应用程序的运行状态的回调函数包,所述应用初始创建模块初始化Application类包括:执行所述回调函数包的初始化init函数,以完成对所述回调函数包内所有回调函数的注册;

其中,每一所述回调函数包括触发事件以及对应所述触发事件的监控操作,每一已注册的所述回调函数用于,在所述应用程序发生所述触发事件时,调用已注册的所述回调函数以执行对应所述触发事件的监控操作。

可选地,所述回调函数包包括用于监控所述应用程序的生命周期的第一类回调函数和/或监控所述应用程序页面的触控事件的第二类回调函数。

可选地,所述回调函数包包括用于监控所述应用程序的生命周期的第一类回调函数,所述装置还包括:

第一函数回调模块,用于在所述应用程序运行过程中,若发生已注册的所述第一类回调函数的触发事件,则调用已注册的所述第一类回调函数,以执行所述触发事件对应的生命周期监控操作。

可选地,所述回调函数包包括用于监控所述应用程序页面的触控事件的第二类回调函数,所述第二类回调函数包括触控事件监控注册函数以及触控事件监控函数,所述装置还包括:

第二函数回调模块,用于在所述应用程序运行过程中,若发生页面生成事件,则调用所述触控事件监控注册函数,以遍历所述页面内的每一view,并注册对应每一view的所述触控事件监控函数。

可选地,所述电子设备为运行安卓系统的电子设备,所述触控事件监控函数继承的安卓系统的AccesibilityDelegate类,其中,安卓系统在所述应用程序发生触控事件时,调用所述AccesibilityDelegate类。

可选地,所述第二函数回调模块还用于:在所述应用程序生成页面后,若检测到针对目标view的触控操作,则调用对应所述目标view的触控事件监控函数,以执行对应所述触发操作的监控操作。

第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述方法的步骤。

第四方面,提供一种电子设备,包括:

上述第三方面所述的计算机可读存储介质;以及

一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。

值得说明的是,电子设备的每个应用APP都有一个Application类,该Application类拥有着与应用程序一样长的生命周期。每一应用程序在启动的时候,电子设备的系统程序首先就会初始化该应用程序,因此,采用本公开上述技术方案,将用于监控应用程序的所有回调函数封装为一个函数包,并且集成该应用程序的Application类,这样,在应用创建过程中,电子设备系统调用Application类即可实现对回调函数的注册,无需开发者手动埋点,且实现了监控逻辑和业务逻辑的解耦,避免了监控逻辑对业务逻辑的影响,而且,该用于监控应用状态的回调函数包还可以在应用程序间复用。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是本公开实施例提供的一种监控应用程序运行的方法的流程示意图;

图2是本公开实施例提供的一种监控应用程序运行的装置的结构示意图;

图3是本公开实施例提供的一种电子设备的结构示意图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

为了使本领域技术人员能够更容易理解本公开实施例提供的技术方案,下面首先对本公开实施例涉及到的相关技术进行简单介绍。

Application类是为了那些需要保存全局变量设计的基本类,在package创建的时候就跟着存在了,并且允许程序开发者进行自己的实现,以安卓系统为例,Application类是安卓框架的一个系统组件,安卓系统会为每个程序运行时创建一个Application类的对象且仅创建一个,用来存储系统的一些全局信息。

具体地,安卓系统的Application类部分代码如下所示:

本公开实施例提供一种监控应用程序运行的方法,应用于电子设备,如图1所示,所述方法包括:

S101、在应用程序创建的过程中,调用该应用程序的Application类,以完成Application类的初始化,其中,该应用程序的Application类包括用于监控该应用程序的运行状态的回调函数包。

这样,上述完成Application类的初始化包括:执行该回调函数包的初始化init函数,以完成对该回调函数包内所有回调函数的注册。

示例地,参照上述Application的程序代码,本公开实施例提供的回调函数包可以如下所示:

上述代码表示回调函数的具体实现,即回调函数具体需要执行的操作,用于监控应用状态的回调函数均可以在此部分实现。

init(Application app)用于实现回调函数的注册。

也就是说,本公开实施例将用于监控应用程序运行状态的回调函数的实现统一封装到一个module(即所述回调函数包)中,该module将其init函数暴露给移动应用供其调用,这样,在初始化Application类时,调用module提供的init的方法即可将所有回调函数注册成功。

参照上述Application类的代码,结合上述回调函数包,在Application初始化时,RegisterActivityLifecycleCallback到Application中。这样,应用程序的Activity创建的时候就会调用Application的dispatchActivityCreated达到监控应用运行状态的作用。

其中,应理解,每一所述回调函数包括触发事件以及对应所述触发事件的监控操作,每一已注册的所述回调函数用于,在所述应用程序发生所述触发事件时,调用已注册的所述回调函数以执行对应所述触发事件的监控操作。也就是说,应用程序在运行过程中,系统程序执行步骤S102。

S102、在所述应用程序运行过程中,若发生已注册的所述回调函数的触发事件,则调用已注册的所述回调函数,以执行所述触发事件对应的监控操作。

其中,该监控操作可以是获取应用程序在发生该触发事件时产生的数据,例如程序崩溃时产生的崩溃数据等,该监控操作例如可以是打log日志,便于开发者查看。

采用上述方法,在应用创建过程中,电子设备系统调用Application类即可实现对回调函数的注册,无需开发者手动埋点,且实现了监控逻辑和业务逻辑的解耦,避免了监控逻辑对业务逻辑的影响,而且,该用于监控应用状态的回调函数包还可以在应用程序间复用。

为了使本领域技术人员更加理解本公开实施例提供的技术方案,下面对上述方法步骤进行详细的说明。

具体地,对于应用程序的运行状态监控主要包括生命周期的监控以及应用程序页面的触控事件的监控,因此,在本公开实施例一种可能的实现方式中,上述回调函数包包括用于监控所述应用程序的生命周期的第一类回调函数和/或监控所述应用程序页面的触控事件的第二类回调函数。

这样,上述步骤S102包括:在应用程序运行过程中,若发生已注册的所述第一类回调函数的触发事件,则调用已注册的所述第一类回调函数,以执行所述触发事件对应的生命周期监控操作。

应用程序的生命周期是在安卓系统中进程从启动到终止的所有阶段,具体地,参照Application类的程序代码,应用程序整个生命周期,从onCreate()开始到onDestroy()结束。其中,Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。例如某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。

而可见的生命周期,从onStart()开始到onStop()结束,在这段时间,Activity可以在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如可以在onStart中注册一个IntentReceiver来监听数据变化导致UI的变动,当不再需要显示时候,可以在onStop()中注销它。

也就是说,本公开实施例的回调函数包即是用于在onCreate()至onDestroy()中注册进监控开发者需求的数据的函数。

另外,所述回调函数包还包括用于监控所述应用程序页面的触控事件的第二类回调函数,所述第二类回调函数包括触控事件监控注册函数以及触控事件监控函数,在此种情况下,本公开实施例提供的方法还包括:在应用程序运行过程中,若发生页面生成事件,则调用所述触控事件监控注册函数,以遍历所述页面内的每一view,并注册对应每一view的所述触控事件监控函数。

也就是说,在Application类初始化时,注册的函数是触控事件监控注册函数,该函数的触发事件是应用程序的页面生成,对应该触发事件的“监控操作”即为注册对应该页面每一view的触控事件监控函数。

示例地,应用程序的业务逻辑中,针对页面的触控事件应用程序应作出对应的响应,为了不影响应用程序的业务逻辑,在本公开实施例中,所述触控事件监控函数可以是继承安卓系统的AccesibilityDelegate类的函数。

值得说明的是,与相关技术中注册OnClickListener函数来监控应用页面的触控事件不同,AccesibilityDelegate类是安卓系统中的一个辅助类,可以监听手机的焦点,窗口变化,按钮点击等等。也就是说,安卓系统在所述应用程序发生触控事件时,会调用所述AccesibilityDelegate类。

AccesibilityDelegate类的部分代码如下所示:

基于此,本公开实施例提供的针对触控事件监控的回调函数的可以如下所示:

该部分代码用于注册辅助代理实现。

这部分代码用于遍历页面每一view注册事件。这样,遍历DecorView下所有的ChildView,并且setAccessibilityDelegate,这样在用户Click页面的时候就会捕捉到相应的事件并进行处理。

也就是说,本公开实施例提供的方法还包括:在所述应用程序生成页面后,若检测到针对目标view的触控操作,则调用对应所述目标view的触控事件监控函数,以执行对应所述触发操作的监控操作。

采用上述方法,本公开实施例利用安卓系统的AccessibilityDelegate实现对页面触控事件的监控,相比相关技术中采用OnClickListener函数来监控应用页面的触控事件,本公开实施例进一步避免了监控逻辑对业务逻辑的影响。

本公开实施例还提供一种监控应用程序运行的装置20,应用于电子设备,例如智能手机,平板电脑等,如图2所示,所述装置20包括:

应用初始创建模块201,用于在所述应用程序创建的过程中,调用所述应用程序的Application类,以完成Application类的初始化;

其中,所述Application类包括用于监控所述应用程序的运行状态的回调函数包,所述应用初始创建模块初始化Application类包括:执行所述回调函数包的初始化init函数,以完成对所述回调函数包内所有回调函数的注册;

其中,每一所述回调函数包括触发事件以及对应所述触发事件的监控操作,每一已注册的所述回调函数用于,在所述应用程序发生所述触发事件时,调用已注册的所述回调函数以执行对应所述触发事件的监控操作。

可选地,所述回调函数包包括用于监控所述应用程序的生命周期的第一类回调函数和/或监控所述应用程序页面的触控事件的第二类回调函数。

可选地,所述回调函数包包括用于监控所述应用程序的生命周期的第一类回调函数,如图2中的虚线框所示,所述装置还包括:

第一函数回调模块202,用于在所述应用程序运行过程中,若发生已注册的所述第一类回调函数的触发事件,则调用已注册的所述第一类回调函数,以执行所述触发事件对应的生命周期监控操作。

可选地,所述回调函数包包括用于监控所述应用程序页面的触控事件的第二类回调函数,所述第二类回调函数包括触控事件监控注册函数以及触控事件监控函数,如图2中的虚线框所示,所述装置还包括:

第二函数回调模块203,用于在所述应用程序运行过程中,若发生页面生成事件,则调用所述触控事件监控注册函数,以遍历所述页面内的每一view,并注册对应每一view的所述触控事件监控函数。

可选地,所述电子设备为运行安卓系统的电子设备,所述触控事件监控函数继承的安卓系统的AccesibilityDelegate类,其中,安卓系统在所述应用程序发生触控事件时,调用所述AccesibilityDelegate类。

可选地,所述第二函数回调模块203还用于:在所述应用程序生成页面后,若检测到针对目标view的触控操作,则调用对应所述目标view的触控事件监控函数,以执行对应所述触发操作的监控操作。

采用上述装置20,该装置20在应用创建过程中,可以调用Application类即可实现对回调函数的注册,无需开发者手动埋点,且实现了监控逻辑和业务逻辑的解耦,避免了监控逻辑对业务逻辑的影响,而且,该用于监控应用状态的回调函数包还可以在应用程序间复用。并且,对于应用页面触控事件的监控,采用安卓系统的AccessibilityDelegate实现,进一步避免了监控逻辑对业务逻辑的影响。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

相应的,本公开还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述监控应用程序运行的方法的步骤。

相应的,本公开还提供一种电子设备,包括:上述的计算机可读存储介质;以及一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。

图3是根据一示例性实施例示出的一种电子设备300的框图。如图3所示,该电子设备300可以包括:处理器301,存储器302,多媒体组件303,输入/输出(I/O)接口304,通信组件305以及上述的一图像采集模块。其中,处理器301用于控制该电子设备300的整体操作,以完成上述的监控应用程序运行的方法中的全部或部分步骤。存储器302用于存储各种类型的数据以支持在该电子设备300的操作,这些数据例如可以包括用于在该电子设备300上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器302可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件303可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器302或通过通信组件305发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口304为处理器301和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件305用于该电子设备300与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G、4G或5G,或它们中的一种或几种的组合,因此相应的该通信组件305可以包括:Wi-Fi模块,蓝牙模块,NFC模块、2G模块、3G模块、4G模块或5G模块。

在一示例性实施例中,电子设备300可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述监控应用程序运行的方法。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1