基于Flutter的页面全生命周期统计方法、设备及存储介质与流程

文档序号:24177466发布日期:2021-03-09 10:39阅读:213来源:国知局
基于Flutter的页面全生命周期统计方法、设备及存储介质与流程
基于flutter的页面全生命周期统计方法、设备及存储介质
技术领域
1.本发明涉及计算机技术领域,尤其涉及基于flutter的页面全生命周期统计方法、设备及存储介质。


背景技术:

2.通过对用户行为监测获得的数据进行分析,可以让应用提供方更加详细、清楚地了解用户的行为习惯,从而找出网站、手机应用、推广渠道等应用提供方产品或营销存在的问题,有助于应用提供方开发更符合用户需求的产品以及发掘高转化率页面等。因此,用户页面使用数据分析显得极其重要,即在获得网站或app页面等平台访问量基本数据的情况下,对有关数据进行统计、分析,从中发现用户访问网站或app等平台的规律,并将这些规律与产品优化策略或网络营销策略等相结合,从而发现目前产品设计或网络营销活动中可能存在的问题,并为进一步优化产品或修正网络营销策略提供依据。
3.flutter是谷歌公司(google inc.)开源的ui工具包,是跨平台开发框架,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动端(ios、android)、web、桌面和嵌入式平台。众所周知,一个产品开发完成交付到用户手中后,为了更好地搜集用户使用行为、调整优化产品,需要对其进行数据统计,其中非常重要也是最基础的就是页面行为统计,得到用户页面使用行为数据,所述页面使用行为数据包含页面访问次数、页面访问路径、页面访问时长等。
4.在flutter开发框架中一切皆为组件widget,若要统计上述页面行为,只能在flutter sdk提供的页面组件statefulwidget生命周期方法中进行,所述页面组件生命周期指某个页面从创建到初始化、暂停、恢复、销毁的完整过程。现有的页面组件生命周期方法,包括状态初始化方法initstate和销毁方法ondispose,也既状态初始化方法中记为页面进入,销毁方法中记为页面退出。
5.现有的页面使用行为数据统计方法,即页面组件生命周期方法存在以下缺点:首先,根据flutter框架提供的生命周期方法只包含初始化方法initstate和销毁方法ondispose,当页面处于暂停、恢复等中间状态时并没有对应的生命周期方法进行统计,导致所统计出来的页面访问次数和实际相比会偏少、页面访问时长和实际相比会偏大,不能完全满足业务需要。具体来说就是,用户首先进入一级页面,此时一级页面的状态称之为“初始化”;通过某操作进入二级页面,一级页面对用户不可见但并没有销毁,此时一级页面的状态称之为“暂停”;当用户从二级页面返回一级页面,一级页面再次对用户可见,此时一级页面的状态称之为“恢复”;如果用户接着通过某操作退出一级页面,此时一级页面的状态称之为“销毁”。一个页面全生命周期由初始化、暂停、恢复和销毁4个状态所组成。
6.基于此,本发明所要解决的技术问题为:避免所统计出来的页面访问次数和实际相比会偏少、页面访问时长和实际相比会偏大,不能完全满足业务需要。


技术实现要素:

7.针对上述问题,本发明提供基于flutter的页面全生命周期统计方法、设备及存储介质,本发明支持flutter页面组件初始化、暂停、恢复、销毁全生命周期监控,可以准确统计页面访问次数、页面访问路径、页面访问时长等,以完全满足业务需要。
8.一方面,本发明提供基于flutter的页面全生命周期统计方法,其技术方案具体如下:
9.基于flutter的页面全生命周期统计方法,所述页面全生命周期包括初始化状态、暂停状态、恢复状态和销毁状态,其特征在于:
10.当页面从暂停状态到恢复状态,将该页面从暂停状态到恢复状态之间的时间不计入该页面的实际使用时长;
11.当页面从暂停状态到恢复状态,将访问该页面的次数仅统计为一次。
12.进一步地,当页面进入初始化状态,将页面处于初始化状态的时间计入该页面的实际使用时长;当页面处于暂停状态,将页面处于暂停状态的时间不计入该页面的实际使用时长;当页面处于恢复状态,将页面处于恢复状态的时间计入该页面的实际使用时长;当页面退出进入销毁状态,将页面处于销毁状态的时间不计入该页面的实际使用时长。
13.进一步地,当用户返回系统桌面或者跳转到其他应用时,通过重写组件监听器的应用生命周期状态变化方法,以在应用状态发生变化时获取当前应用对用户是恢复状态还是暂停状态;当用户对页面进行操作时会触发对应的页面操作方法,当所述页面操作方法被唤起时会传入至少一个参数;通过获取所述参数中所指示的页面来判断所述页面是处于暂停状态还是恢复状态。
14.进一步地,当用户首次打开当前页面,会触发初始化方法,此时当前页面处于初始化状态,当用户退出当前页面,会触发销毁方法,此时当前页面处于销毁状态。
15.进一步地,所述页面操作包含打开页面、退出页面、移除页面和替换页面;所述页面操作方法包含页面打开方法、退出方法、移除方法和替换方法。
16.进一步地,当打开方法、替换方法被调用,所述参数所指示页面是当前页面,判断当前页面即将进入暂停状态;
17.进一步地,当退出方法、移除方法被调用,所述参数所指示页面是当前页面,判断当前页面即将进入恢复状态。
18.进一步地,组件监听器负责监控不同应用间切换时的暂停状态和恢复状态;导航监听器监控同一应用内所有页面切换时的暂停状态和恢复状态。
19.另一方面还提供基于flutter的页面全生命周期统计设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任一所述的页面全生命周期统计方法。
20.另一方面还提供一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述任一所述的页面全生命周期统计方法。
21.本申请提供的基于flutter的页面全生命周期统计方法、设备及存储介质,具有如下技术效果:
22.本发明给出了基于flutter的页面全生命周期统计方法的技术方案,即当页面从暂停状态到恢复状态,将该页面从暂停状态到恢复状态之间的时间不计入该页面的实际使用时长;当页面从暂停状态到恢复状态,将访问该页面的次数仅统计为一次。这样可以避免所统计出来的页面访问次数和实际相比会偏少、页面访问时长和实际相比会偏大。基于本发明的页面组件的全生命周期统计方案,可以准确统计页面访问次数、页面访问路径、页面访问时长等,以完全满足业务需要。
附图说明
23.图1是本发明实施例提供的一种基于flutter的页面全生命周期统计方法示意图。
24.图2是本发明实施例提供的工作流程图。
具体实施方式
25.为了使本领域技术人员更好地理解本发明技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例,本实施例仅用于解释本发明,并不构成对本发明保护范围的限定。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
26.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
27.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
28.本技术领域技术人员可以理解,这里所使用的“页面”、“应用”、“页面访问”、“页面组件生命周期”等适用于移动终端或web或桌面或嵌入式平台,所述“应用”可以为应用软件或者系统软件。本发明所述“设备”可以包括:计算机、平板电脑、手机、穿戴设备(如手环等)等等。
29.首先,对本发明中可能涉及到的技术术语进行简要描述:
30.flutter:是谷歌公司(google inc.)开源的ui工具包,是跨平台开发框架,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动端(ios、android)、web、桌面和嵌入式平台。
31.页面组件生命周期:指某个页面从创建到初始化、暂停、恢复、销毁的完整过程。
32.一个产品开发完成交付到用户手中后,为了更好地搜集用户使用行为、调整优化产品,需要对其进行数据统计,其中非常重要也是最基础的就是页面行为统计,包括页面访问次数、页面访问路径、页面访问时长等。
33.在flutter开发框架中一切皆为组件widget,若要统计上述页面行为,只能在
flutter sdk提供的页面组件statefulwidget生命周期方法中进行,包括状态初始化方法initstate和销毁方法ondispose,也既状态初始化方法中记为页面进入,销毁方法中记为页面退出。
34.以下介绍本发明基于flutter的页面全生命周期统计方法的具体实施例,图1为本发明基于flutter的页面全生命周期统计方法示意图,本发明提供了如本实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。该方法的执行主体可以为终端,终端具体可以包括运行于实体设备中的软件,例如安装在设备上的应用等,也可以包括安装有应用的智能手机、平板电脑、数字助理、智能可穿戴设备等类型的实体设备中至少一种。具体的,终端上运行有操作系统,该操作系统可以是ios(苹果移动终端操作系统)或者安卓(android)操作系统等操作系统。
35.根据flutter框架提供的生命周期方法只包含初始化方法initstate和销毁方法ondispose,当页面处于暂停、恢复等中间状态时并没有对应的生命周期方法进行统计,导致所统计出来的页面访问次数和实际相比会偏少、页面访问时长和实际相比会偏大,不能完全满足业务需要。
36.本发明实施例一,如图1所示。所述一种基于flutter的页面全生命周期统计方法,本发明所述页面全生命周期包括初始化状态、暂停状态、恢复状态和销毁状态,具体实施方式如下:
37.s01:当页面从暂停状态到恢复状态,将该页面从暂停状态到恢复状态之间的时间不计入该页面的实际使用时长。
38.s02:当页面从暂停状态到恢复状态,将访问该页面的次数仅统计为一次。
39.具体来说就是,用户首先进入一级页面,此时一级页面的状态称之为“初始化”;通过某操作进入二级页面,一级页面对用户不可见但并没有销毁,此时一级页面的状态称之为“暂停”;当用户从二级页面返回一级页面,一级页面再次对用户可见,此时一级页面的状态称之为“恢复”;如果用户接着通过某操作退出一级页面,此时一级页面的状态称之为“销毁”。一个页面全生命周期由初始化、暂停、恢复和销毁4个状态所组成。从一级页面暂停状态到恢复状态之间的时间,不计入其实际使用时长,否则会导致页面访问时长统计结果和实际相比会偏大。从一级页面暂停状态到恢复状态,计为一次页面进入,否则会导致页面访问次数和实际相比会偏少。所述一级页面和所述二级页面都有各自完整的生命周期,所述二级页面的进入会使得所述一级页面从可见变为不可见,从而所述一级页面的生命周期从初始化变为暂停,为了说明问题此处只关注所述一级页面的生命周期。
40.当页面进入初始化状态,将页面处于初始化状态的时间计入该页面的实际使用时长;当页面处于暂停状态,将页面处于暂停状态的时间不计入该页面的实际使用时长;当页面处于恢复状态,将页面处于恢复状态的时间计入该页面的实际使用时长;当页面退出进入销毁状态,将页面处于销毁状态的时间不计入该页面的实际使用时长。
41.用户进入页面的实际使用时长统计数据的准确性跟页面的全生命周期监控的有效性有关,下面介绍页面的全生命周期的监控方法。
42.本发明所述页面的全生命周期的监控方法:当用户返回系统桌面或者跳转到其他应用时,通过重写组件监听器的应用生命周期状态变化方法,以在应用状态发生变化时获
取当前应用对用户是恢复状态还是暂停状态;当用户对页面进行操作时会触发对应的页面操作方法,当所述页面操作方法被唤起时会传入至少一个参数;通过获取所述参数中所指示的页面来判断所述页面是处于暂停状态还是恢复状态。
43.这里需要说明的是,是通过组件监听器widgetsbindingobserver监听不同应用的状态来实现应用间切换时的暂停和恢复状态。即,当用户返回系统桌面或者跳转到其他应用时,会触发组件监听器的应用生命周期状态变化方法didchangeapplifecyclestate,通过重写此方法,以在应用状态发生变化时实时获取当前应用对用户是恢复(应用可见)还是暂停(应用不可见)。
44.具体来说就是:如果该应用状态由恢复状态(可见状态)改变为暂停状态,比如按home键返回桌面或者切换到其他应用,那么相应的,该应用的顶层页面也变成了暂停状态;如果该应用状态由暂停状态改变为恢复状态(可见状态),比如从桌面点击应用图标再次打开该应用或者从其他应用切换回该应用,那么相应的,该应用的顶层页面也变成了恢复状态(可见状态)。
45.这里还需要说明的是,是通过导航监听器globalnavigatorobserver在全局监听应用内所有页面切换事件来实现页面切换时的暂停和恢复状态。即,当用户打开页面、退出页面、移除页面、替换页面时会触发对应的打开方法didpush、退出方法didpop、移除方法didremove、替换方法didreplace这几个方法。
46.从这几个方法签名中可以看出,当flutter框架唤起这几个方法时候会传入route(route<dynamic>类型)和previousroute(route<dynamic>类型)这两个参数,本发明是通过获取previousroute参数中所指示的页面来判断页面处于暂停还是恢复状态。
47.具体来说就是:当打开方法didpush、替换方法didreplace被调用,如果参数previousroute所指示页面是当前页面,那么当前页面即将进入暂停状态;当退出方法didpop、移除方法didremove被调用,如果参数previousroute所指示页面是当前页面,那么当前页面即将进入恢复状态。
48.当用户首次打开当前页面,会触发初始化方法,此时当前页面处于初始化状态,当用户退出当前页面,会触发销毁方法,此时当前页面处于销毁状态。
49.这里需要说明的是,页面状态抽象类basepagestate<t extends statefulwidget>是所有页面组件的父类,本发明通过页面状态抽象类basepagestate<t extends statefulwidget>来实现页面初始化。当用户首次打开当前页面,一定会触发初始化方法initstate,此时当前页面处于初始化状态。
50.同样地,本发明通过页面状态抽象类basepagestate<t extends statefulwidget>来实现页面销毁状态。当用户退出当前页面,一定会触发销毁方法dispose,此时当前页面处于销毁状态。
51.所述页面操作包含打开页面、退出页面、移除页面和替换页面;所述页面操作方法包含页面打开方法、退出方法、移除方法和替换方法。
52.当打开方法、替换方法被调用,所述参数所指示页面是当前页面,判断当前页面即将进入暂停状态;当退出方法、移除方法被调用,所述参数所指示页面是当前页面,判断当前页面即将进入恢复状态。
53.组件监听器负责监控不同应用间切换时的暂停状态和恢复状态;导航监听器监控
同一应用内所有页面切换时的暂停状态和恢复状态。
54.此外,页面生命周期全局监听器basepagestateobservable提供了应用内全局唯一的页面组件生命周期监听出口,在此可进行统计数据上传。
55.该监听器提供了页面进入方法oninitstate(state state)、页面暂停方法onpause(state state)、页面恢复方法onresume(state state)、页面销毁方法ondispose(state state)四个接口方法,开发者需要给的页面状态抽象类basepagestate传入该监听器实例对象。
56.当页面生命周期发生改变时,由页面状态抽象类basepagestate调用该实例对象对应的四个方法,也既接口回调,开发者在这四个接口方法中获取参数state指示的页面名称(state.widget.tostring),即可进行统计数据上传,无需编写繁琐的埋点代码。
57.本发明整体工作流程涉及组件监听器widgetsbindingobserver、导航监听器globalnavigatorobserver、页面状态抽象类basepagestate<textends statefulwidget>、页面生命周期全局监听器basepagestateobservable,上述4个部分组合起来的方法流程如附图2所示。
58.打开应用,flutter架构启动,执行运行应用方法runapp,同时给flutter架构返回材料应用组件materialapp。
59.向材料应用组件materialapp的导航监听器构造参数navigatorobservers传入全局导航监听器globalnavigatorobserver实例对象,开始监听应用内所有页面的切换事件。
60.生成页面生命周期全局监听器basepagestateobservable实例对象,并传给页面状态抽象类basepagestate。
61.进入页面,触发对应的页面进入方法oninitstate(为了清楚地描述,记为“页面进入方法a”),在此方法中调用flutter架构提供的组件绑定类widgetsbinding的增加监听器方法addobserver传入组件监听器widgetsbindingobserver实例对象,开启应用状态监听。
62.同时,在页面进入oninitstate方法中触发页面生命周期全局监听器basepagestateobservable实例对象的页面进入方法oninitstate(state state)(为了清楚地描述,记为“页面进入方法b”)。
63.后续因为页面切换、应用切换导致的页面暂停、恢复、销毁,都会触发生命周期全局监听器basepagestateobservable实例对象的页面暂停方法onpause(state state)、页面恢复方法onresume(state state)、页面销毁方法ondispose(state state)。
64.在生命周期全局监听器basepagestateobservable实例对象相应方法中,进行统计数据上传。
65.统计后台进行数据分析和展示。
66.本发明实施例二提供了基于flutter的页面全生命周期统计设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上任一所述的页面全生命周期统计方法。
67.本发明实施例三提供了一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如上任一所述的页面全生命周期统计方法。
68.可选地,在本申请实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
69.本发明给出了基于flutter的页面全生命周期统计方法的技术方案,所述页面组件的全生命周期包括初始化、暂停、恢复和销毁。当页面处于暂停、恢复等中间状态时并没有对应的生命周期方法进行统计,导致所统计出来的页面访问次数和实际相比会偏少、页面访问时长和实际相比会偏大,不能完全满足业务需要。基于本发明的页面组件的全生命周期监控方案,有利于准确统计页面访问次数、页面访问路径、页面访问时长等,以完全满足业务需要。
70.需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
71.本说明书中的各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
72.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
73.以上显示和描述了本发明的基本原理、主要特征和优点。本领域技术人员应该了解,以上所述仅为本发明的较佳实施例,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入本发明要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1