应用程序中消息处理方法、装置、终端及存储介质与流程

文档序号:31565658发布日期:2022-09-20 20:27阅读:61来源:国知局
应用程序中消息处理方法、装置、终端及存储介质与流程

1.本公开涉及但不限于计算机技术领域,尤其涉及一种应用程序中消息处理方法的、装置、终端及存储介质。


背景技术:

2.在相关技术方案中,为了用户获得更好的使用体验,会对应用的性能做优化。而在做应用性能优化过程中,尤其是耗时类优化过程中,需要知道某一段时间内究竟执行了哪些代码,从而获知最终导致用户可感知的卡顿等的问题。而目前无法对应用中消息执行监控、无法完整找到一段时间内执行的所有代码和/或消息发送的源头,从而难以解决应用中消息中存在的问题。


技术实现要素:

3.本公开提供一种应用程序中消息处理方法、装置、终端及存储介质。
4.根据本公开的第一方面,提供一种应用程序中消息处理方法,所述方法包括:
5.获取应用程序中至少一个消息所使用的第一类文件;
6.基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得插桩后的第二类文件;其中,所述第一函数用于确定所述消息的位置信息;所述第二函数用于确定所述消息的执行时间;
7.获取运行所述第二类文件的结果信息,其中,所述结果信息包括:所述消息的所述执行时间和/或所述消息的所述位置信息。
8.在一些实施例中,所述方法包括:
9.若所述消息对应的所述结果信息中所述执行时间大于或等于预定时长,将所述消息对应的包括所述执行时间和所述位置信息的所述结果信息发送给服务端。
10.在一些实施例中,所述第一类文件包括:第一父类文件;
11.所述基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得插桩后的第二类文件,包括:
12.创建包括所述第一函数和/或所述第二函数的所述第一父类文件;
13.将包括所述第一函数和/或所述第二函数的所述第一父类文件替换原始的所述第一父类文件,以获得插桩后的所述第二父类文件。
14.在一些实施例中,所述第一类文件包括:第一子类文件,其中,所述第一子类文件为第一父类文件的子类;
15.所述基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得插桩后的第二类文件,包括:
16.将所述第一函数和/或所述第二函数插入到所述第一子类文件,以获得插桩后的第二子类文件。
17.在一些实施例中,所述获取应用程序中至少一个消息所使用的第一类文件,包括
以下之一:
18.获取所述应用程序中所述消息所使用的所有所述第一类文件;
19.获取所述应用程序中所述消息所使用的至少一个所述第一类文件;
20.基于预配置文件,获取所述预配置文件指示的在所述应用程序中的至少一个所述第一类文件。
21.在一些实施例中,所述基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得插桩后的第二类文件,包括:
22.基于同一所述第一函数和/或同一所述第二函数对至少一个所述第一类文件进行插桩处理,以获得至少一个所述插桩后的所述第二类文件。
23.根据本公开的第二方面,提供一种应用程序中消息处理装置,包括:
24.获取模块,用于获取应用程序中至少一个消息所使用的第一类文件;
25.处理模块,用于基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得插桩后的第二类文件;其中,所述第一函数用于确定所述消息的位置信息;所述第二函数用于确定所述消息的执行时间;
26.所述获取模块,用于获取运行所述第二类文件的结果信息,其中,所述结果信息包括:所述消息的所述执行时间和/或所述消息的所述位置信息。
27.在一些实施例中,所述装置包括:
28.发送模块,用于若所述消息对应的所述结果信息中所述执行时间大于或等于预定时长,将所述消息对应的包括所述执行时间和所述位置信息的所述结果信息发送给服务端。
29.在一些实施例中,所述第一类文件包括:第一父类文件;
30.所述处理模块,用于创建包括所述第一函数和/或所述第二函数的所述第一父类文件;
31.所述处理模块,还用于将包括所述第一函数和/或所述第二函数的所述第一父类文件替换原始的所述第一父类文件,以获得插桩后的所述第二父类文件。
32.在一些实施例中,所述第一类文件包括:第一子类文件,其中,所述第一子类文件为第一父类文件的子类;
33.所述处理模块,用于将所述第一函数和/或所述第二函数插入到所述第一子类文件,以获得插桩后的第二子类文件。
34.在一些实施例中,所述获取模块,用于以下之一:
35.获取所述应用程序中所述消息所使用的所有所述第一类文件;
36.获取所述应用程序中所述消息所使用的至少一个所述第一类文件;
37.基于预配置文件,获取所述预配置文件指示的在所述应用程序中的至少一个所述第一类文件。
38.在一些实施例中,所述处理模块,用于基于同一所述第一函数和/或同一所述第二函数对至少一个所述第一类文件进行插桩处理,以获得至少一个所述插桩后的所述第二类文件。
39.根据本公开的第三方面,提供一种终端,包括:
40.处理器;
41.用于存储处理器可执行指令的存储器;
42.其中,所述处理器被配置为:用于运行所述可执行指令时,实现本公开任意实施例的所述的应用程序中消息处理方法。
43.根据本公开的第四方面,提供一种计算机可读存储介质,所述可读存储介质存储有可执行程序,其中,所述可执行程序被处理器执行时实现本公开任意实施例所述的应用程序中消息处理方法。
44.本公开的实施例提供的技术方案可以包括以下有益效果:
45.本公开实施例中,可以通过获取应用程序中至少一个消息所使用的第一类文件;基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得插桩后的第二类文件;其中,所述第一函数用于确定所述消息的位置信息;所述第二函数用于确定所述消息的执行时间;并获取运行所述第二类文件的结果信息,其中,所述结果信息包括:所述消息的所述执行时间和/或所述消息的所述位置信息;如此可以清晰的知道应用程序中消息(即消息对应的代码)的执行时间和/或定位到消息发送的源头,从而可以分析出出现问题的消息,便于开发人员等解决该些问题。
46.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
47.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
48.图1是根据一示例性实施例示出的一种应用程序中消息处理方法的流程图。
49.图2是根据一示例性实施例示出的一种应用程序中消息处理方法的流程图。
50.图3是根据一示例性实施例示出的一种应用程序中消息处理方法的流程图。
51.图4是根据一示例性实施例示出的一种应用程序中消息处理方法的流程图。
52.图5是根据一示例性实施例示出的一种应用程序中消息处理方法的流程图。
53.图6是根据一示例性实施例示出的一种应用程序中消息处理装置的框图。
54.图7是根据一示例性实施例示出的一种应用程序中消息处理装置的框图。
55.图8是根据一示例性实施例示出的一种终端的框图。
具体实施方式
56.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
57.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
58.如图1所示,本公开实施例提供一种应用程序中消息处理方法,所述方法包括:
59.步骤s11:获取应用程序中至少一个消息所使用的第一类文件;
60.步骤s12:基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得
插桩后的第二类文件;其中,所述第一函数用于确定所述消息的位置信息;所述第二函数用于确定所述消息的执行时间;
61.步骤s13:获取运行所述第二类文件的结果信息,其中,所述结果信息包括:所述消息的所述执行时间和/或所述消息的所述位置信息。
62.本公开实施例提供的应用程序中消息处理方法可由终端或者服务器执行。该终端可以是各种移动终端或者固定终端;例如该终端可以但不限于是计算机、手机、或者医疗设备等。该服务器可以是各种类型服务器,例如可以是云端服务器或者本地服务器等。
63.这里,该应用程序可以是但不限于是任意一种应用程序(app),小程序或者公众号等。
64.在一个实施例中,步骤s11,包括:获取应用程序中一个消息所使用的第一类文件。
65.在另一个实施例中,步骤s11,包括:获取应用程序中多个消息所使用的第一类文件。在本公开的一些实施例中,多个为两个或两个以上。
66.在又一个实施例中,步骤s11,包括:获取应用程序中任意阶段所有执行消息中至少一个消息的所使用的第一类文件。
67.这里,第一类文件包括但不限于以下至少之一:第一父类文件、及第一子类文件;其中,第一子类文件为第一父类文件的子类。
68.示例性的,第一父类文件包括:handler类。第一子类文件包括:handler类的子类;例如,第二子类文件包括:memoryhandler子类、和/或streamhandler子类等。
69.示例性的,应用程序以java语言编写,编写各个java文件在编译后可生成第一类(class)文件;其中,java文件中每个类可以生成一个类文件,该类文件即为上述实施例中第一类文件。这里,该第一父类文件可以是java文件中各类文件的一个或多个;第一子类文件可以是任意一个第一父类文件的子类;在此不对具体的第一父类文件和/或第一子类文件做限制。
70.当然,在其它的实施例中,应用程序也可以是以其它编译语言编写。例如应用程序可以是但不限于是以c、c++、objective-c、swift、kotlin、或者delphi语言编写的;而第一类文件是该些语言编写的文件在编译后生成的文件。
71.这里,第一函数可以是任意一种用于确定位置信息的函数或者代码。这里,可基于第一函数,确定出消息对应的代码在整个应用代码中的哪一行。示例性的,第一函数包括:sendmessageattime。
72.这里,第二函数可以是任意一种用于确定执行时间的函数或者代码。在一个实施例中,执行时间包括:开始时间及结束时间。示例性的,第二函数包括:dispatchmessage。
73.如此,本公开实施例通过第一函数可以准确知晓消息对应的代码在整个应用代码中哪一行,准确知晓该消息对应的位置。
74.并且,本公开实施例提可以第二函数可以准确知晓消息对应的代码执行时间,从而确定出执行该消息的执行时间是否过长而导致应用的卡顿等情况。
75.这里,步骤s12中插桩处理,包括:将函数或者代码插入到原本的代码;或者,将函数或者代码替换原本的代码。示例性的,将第一函数和/或第二函数插入到第一类文件,以获得第二类文件。示例性的,将包括第一函数和/或第二函数的第一类文件替换原始的第一类文件;这里,原始的第一类文件不包括:第一函数和/或第二函数。
76.在一个实施例中,步骤s13之前还包括:在终端中运行所述第二类文件。
77.这里,若应用程序的项目管理工具为gradle;则可以将第一函数和/或第二函数编写在gradle插件中;其中,gradle为一个项目自动化构建开源工具。当然,在其它的实施例中,应用程序的项目管理工具不限于gradle,还可以是maven、或者ant等;在此不对具体的项目管理工具作限制。
78.这里,终端可以利用asm对第一类文件进行插桩处理,以获得第二类文件;其中,asm是一个字节码操作库。当然,在其它的实施例中,字节码操作库不限于asm,还可以是cglib、或者apache bcel等;在此不对具体的字节码操作库。
79.示例性的,步骤s12可以是:在编译阶段,基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得插桩后的第二类文件;运行所述第二类文件,可以是:在运行阶段,运行所述第二类文件。
80.在本公开实施例中,可以通过终端或者服务器获取应用程序中至少一个消息所使用的第一类文件;基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得插桩后的第二类文件;其中,所述第一函数用于确定所述消息的位置信息;所述第二函数用于确定所述消息的执行时间;并获取运行所述第二类文件的结果信息,其中,所述结果信息包括:所述消息的所述执行时间和/或所述消息的所述位置信息;如此可以清晰的知道应用程序中消息(即消息对应的代码)的执行时间和/或定位到消息发送的源头,从而可以分析出出现问题的消息,便于开发人员等解决该些问题。
81.例如,若知道该消息的执行时间超过一定阈值,则可以确定出该消息为耗时比较多的消息,且可以根据该消息的位置,即该消息对应的代码的位置,有利于解决应用中卡顿等的问题。
82.如图2所示,在一些实施例中,所述方法包括:
83.步骤s14:若所述消息对应的所述结果信息中所述执行时间大于或等于预定时长,将所述消息对应的包括所述执行时间和所述位置信息的所述结果信息发送给服务端。
84.在一个实施例中,步骤s14中发送给服务端可以发送给终端对应的服务端。
85.在一些实施例中,若服务端接收到消息的结果信息后,基于预定方式展示所述消息的所述结果信息。
86.这里,基于预定方式展示所述消息的所述结果信息,可以是但不限于是以下之一:
87.输出至少一个消息的所述结果信息;
88.基于图表展示至少一个消息的所述结果信息;
89.基于excel表展示至少一个消息的所述结果信息。
90.在本公开实施例中,可以将至少一个消息的结果信息发送给服务端,以利于服务端展示该消息或者该些消息的结果信息,从而有利于开发人员等对该些消息对应的代码进行快速修正;如此降低应用程序出现的问题,例如出现的卡顿等情况。
91.在另一些实施例中,若执行该应用程序中消息处理方法的终端为第一终端,则步骤s14也可以是:若所述消息对应的所述结果信息中所述执行时间大于或等于预定时长,将所述消息对应的包括所述执行时间和所述位置信息的所述结果信息发送给第二终端。这里,第二终端为除第一终端以外的其它任意终端。如此,还可以将应用程序的至少一个消息的结果信息发送给其它终端,以便于开发人员等用户对相应消息的代码进行修正,从而解
决出现的问题。
92.如图3所示,在一些实施例中,所述第一类文件包括:第一父类文件;
93.所述步骤s12,包括:步骤s121;其中,步骤s121包括:
94.步骤s121a:创建包括所述第一函数和/或所述第二函数的所述第一父类文件;
95.步骤s121b:将包括所述第一函数和/或所述第二函数的所述第一父类文件替换原始的所述第一父类文件,以获得插桩后的所述第二父类文件。
96.这里,第二类文件,包括:第二父类文件。该第二父类文件包括:第一函数和/或第二函数的所述第二父类文件。
97.这里,原始的所述第一父类文件,即原本的未包括第一函数和/或第二函数的第一父类文件。
98.示例性的,终端自定义一个覆写第一函数和/或第二函数的第一类文件,例如自定义一个覆写sendmessageattime和/或dispatchmessage的handler类;并通过asm在编译阶段对应用程序的项目中代码进行扫描处理,其中,该扫描处理可包括读取代码的字节码,并转换为方便读写的格式。终端若扫描到handler类,基于asm提供的应用程序编码接口(application programming interface,api)将handler类替换为自定义的覆写了sendmessageattime和/或dispatchmessage的handler类。这里,gradle插件可包括api。
99.在上述实施例中,可以将第一函数和/或第二函数写入到gradle插件,并将handler类替换为包括gradle插件的handler类。
100.如此,在本公开实施例中,可以通过终端创建包括第一函数和/或第二函数的第一父类文件,并将该第一父类文件替换原始的第一父类文件以得到插桩后的第二父类文件;如此可以实现对第一父类文件的代码的位置和/或执行时间的监控。当创建的第一父类文件中包括第一函数时,在运行该第二父类文件时可监控到第一父类文件的代码具体在哪一行,从而可实现对该些代码对应的消息的位置的监控。和/或,当创建的第一父类文件中包括第二函数时,在运行该第二父类文件时可监控到第一父类文件的代码的执行时间,从而可实现对该些代码对应的消息的执行时间的监控。
101.如图4所示,所述第一类文件包括:第一子类文件,其中,所述第一子类文件为第一父类文件的子类;
102.所述步骤s12,包括:
103.步骤s122:将所述第一函数和/或所述第二函数插入到所述第一子类文件,以获得插桩后的第二子类文件。
104.这里,第二类文件,包括:第二子类文件。
105.示例性的,终端通过asm在编译阶段对应用程序的项目中代码进行扫描处理,其中,该扫描处理可包括读取代码的字节码,并转换为方便读写的格式。终端若扫描到第一子类文件,则将第一函数和/或第二函数插入到第一子类文件,以获得插桩后的第二子类文件。例如,若终端扫描到handler类的子类,则通过asm的api将sendmessageattime和/或dispatchmessage插入到handler类的子类中,以获得包括sendmessageattime和/或dispatchmessage插入到handler类的子类中。
106.在上述实施例中,可以将第一函数和/或第二函数写入到gradle插件,并将gradle插件插入到handler类的子类中。
107.如此,在本公开实施例中,可以通过终端将第一函数和/或第二函数插入到的第一子类文件,以得到插桩后的第二子类文件;如此可以实现对第一子类文件的代码的位置和/或执行时间的监控。当创建的第一子类文件中包括第一函数时,在运行该第二子类文件时可监控到第一子类文件的代码具体在哪一行,从而可实现对该些代码对应的消息的位置的监控。和/或,当创建的第一子类文件中包括第二函数时,在运行该第二子类文件时可监控到第一子类文件的代码的执行时间,从而可实现对该些代码对应的消息的执行时间的监控。
108.在一些实施例中,所述步骤s11,包括以下之一:
109.获取所述应用程序中所述消息所使用的所有所述第一类文件;
110.获取所述应用程序中所述消息所使用的至少一个所述第一类文件;
111.基于预配置文件,获取所述预配置文件指示的在所述应用程序中的至少一个所述第一类文件。
112.这里,应用程序中所述消息可以是:应用程序中至少一个所述消息。示例性的,应用程序中的所述消息可以是:应用程序中所有消息;或者,应用程序中所述消息可以是:应用程序中部分消息。示例性的,应用程序中所述消息可以是:应用程序中预定时间段的所述消息。这里,预定时间段可以是任意时间段。
113.这里,预配置文件用于指示至少一个所述第一类文件;其中,所述第一类文件包括:至少一个第一父类文件和/或至少一个第一子类文件。
114.在一个实施例中,预配置文件用于指示预计故障大于或等于预定概率的所述第一类文件。
115.示例性的,一个应用程序中有一个或多个消息;一个消息所使用的第一类文件包括一个或多个;其中,第一类文件包括:第一父类文件和/或第一子类文件。
116.在本公开的一种实施方式中,终端可以获取应用程序中所有消息的所有第一类文件。
117.如此,在本公开实施例中,终端可以实现对所有消息对应的第一类文件实现全局监控,可以对所有消息的定位及执行时间实现准确的监控,从而相对全面的检查出应用程序的消息的问题。
118.在本公开的另一种实施方式中,终端可以获取应用程序中至少一个消息的所有第一类文件。
119.如此,在本公开实施例中,终端可以实现对至少部分消息对应的第一类文件实现全局监控,可以对至少部分消息实现准确的定位及执行时间的确定。
120.在本公开的又一种实施方式中,终端获取预配置文件;并基于预配置文件中指示的至少一个第一类文件,获取应用程序的至少一个消息中与预配置文件指示的相同的至少一个第一类文件。
121.如此,在本公开实施例中,可以基于预配置文件,实现对至少部分消息中预配置的至少部分第一类文件进行监控,从而实现对该部分第一类文件的定位及执行时间的准确监控;例如该部分第一类文件是预计出现问题频率相对较高的类文件。如此一方面也可以相对较为准确的确定出该消息出现问题的第一类文件;另一方面还可以减少监控的计算量,降低终端的功耗等。
122.在本公开的又一种实施方式中,终端可以随机获取应用程序中至少一个消息的至少一个第一类文件。
123.如此,在本公开实施例中,终端也可以随机抽取至少一个消息的至少一个第一类文件进行监控;从而一方面也能在对应程度上确定出消息出现问题的第一类文件;另一方面可以减少监控的计算量,降低终端的功耗等。
124.在一些实施例中,步骤s12中所述基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得插桩后的第二类文件,包括:
125.基于同一所述第一函数和/或同一所述第二函数对至少一个所述第一类文件进行插桩处理,以获得至少一个所述插桩后的所述第二类文件。
126.示例性的,对于消息1中所有handler类覆写sendmessageattime和dispatchmessage这两个函数,和对于消息2中的至少一个handler类的子类插入sendmessageattime和dispatchmessage这两个函数,以及对于消息3中的所有handler类均覆写sendmessageattime和dispatchmessage这两个函数,等等。
127.在本公开实施例中,对于至少一个消息的至少一个第一类文件,均采用同一第一函数和/或第二函数进行插桩处理,可以简化第一函数和/或第二函数的设置,及加快监控对至少一个消息的监控进度。
128.为了进一步解释本公开任意实施例,以下提供一个具体示例:
129.如图5所示,本公开实施例提供一种应用程序中消息处理方法,包括以下步骤:
130.步骤s21:终端自定义一个gradle插件,其中,gradle插件用于终端基于asm将应用程序中的至少部分handler类替换成自定义的handler类或者用于增加handler类的子类;
131.这里,gradle插件,可用于终端基于asm将应用程序对应项目中所有handler类或者预配置文件指示的至少部分handler类替换成自定义的handler类;或者,gradle插件,可用于终端将grandle插件基于asm分别插入到应用程序对应项目中所有handler类的子类或者预配置文件指示的至少部分handler类的至少部分子类中。
132.示例性的,终端可通过asm在编译阶段对应用程序的项目中代码进行扫描处理,其中,该扫描处理可包括读取代码的字节码,并转换为方便读写的格式。终端若扫描到handler类,则可基于asm提供的api将替换为自定义的handler类。这里,自定义的handler类可以为自定义的包括gradle插件的handler类。这里,
133.步骤s22:终端自定义一个handler类;其中,自定义的handler类覆写sendmessageattime和dispatchmessage这两个函数;其中,sendmessageattime用于确定消息的位置信息;dispatchmessage用于确定消息的执行时间;
134.这里,未包括sendmessageattime和dispatchmessage的handler类可以为上述实施例中第一父类文件;自定义的handler类可以额为上述实施例中第二父类文件。
135.步骤s23:终端基于gradle插件,将应用程序中handler类替换为自定义的handler,和/或,将sendmessageattime和dispatchmessage插入到handler类的子类中;
136.在一个可选实施例中,在编译应用程序包(android application package,apk)时,替换应用功能程序中所有项目的至少部分handler类和handler类的子类;其中,替换handler类和handler类的子类的方式不一样:
137.例如,终端将覆写sendmessageattime和dispatchmessage的handler类替换项目
中至少部分handler类;和/或终端将sendmessageattime和dispatchmessage插入到handler类的子类中。
138.这里,插入sendmessageattime和dispatchmessage的handler类的子类,可以为上述实例中的第二子类文件。
139.步骤s24:终端检测到用户操作,安装apk,并执行apk对应的应用程序的操作;
140.步骤s25:终端运行应用程序,并记录至少一个消息对应的执行时间及位置信息;
141.这里,终端运行应用程序时,可运行sendmessageattime和dispatchmessage这两个函数,以获得至少一个第一子类文件和/或至少一个第二父类文件对应的消息的执行时间和位置信息。
142.步骤s26:终端将执行时间大于或等于预定时长的消息的结果信息发送给服务端,其中,结果信息包括:消息的执行时间和位置信息;
143.步骤s27:服务端接收到消息的结果信息后,基于图表的形式展示消息的结果信息。
144.如此,在本公开实施例中,可以通过sendmessageattime和dispatchmessage对应用程序项目对应的代码进行插桩处理,以准确确定出应用程序的消息的位置信息和执行时间,从而可以监控到消息的执行时间及发送消息的位置、实现终端监控。并且,通过将监控到的执行时间大于或等于预定时长的消息的接结果信息发送给服务端,有利于可以人工或者自动化的确定出消息中出现的问题,有利于及时对消息的代码进行修改以修正消息出现的问题。
145.并且,在本公开实施例中,可以清晰的知道一定时间内执行哪些消息并定位到消息发送的源头,可以相对彻底地解决问题。
146.并且,在本公开实施例中,可以将进行了sendmessageattime和dispatchmessage的插桩处理的handler类和handler类的子类分装到apk中,直接将该apk对应应用程序在终端中运行;如此还可以适应真实用户场景的使用。
147.如图6所示提供一种应用程序中消息处理装置,所述装置包括:
148.获取模块51,用于获取应用程序中至少一个消息所使用的第一类文件;
149.处理模块52,用于基于第一函数和/或第二函数对所述第一类文件进行插桩处理,以获得插桩后的第二类文件;其中,所述第一函数用于确定所述消息的位置信息;所述第二函数用于确定所述消息的执行时间;
150.所述获取模块51,用于获取运行所述第二类文件的结果信息,其中,所述结果信息包括:所述消息的所述执行时间和/或所述消息的所述位置信息。
151.如图7所示,在一些实施例中,所述装置还包括:
152.发送模块53,用于若所述消息对应的所述结果信息中所述执行时间大于或等于预定时长,将所述消息对应的包括所述执行时间和所述位置信息的所述结果信息发送给服务端。
153.在一些实施例中,所述第一类文件包括:第一父类文件;
154.所述处理模块52,用于创建包括所述第一函数和/或所述第二函数的所述第一父类文件;
155.所述处理模块52,还用于将包括所述第一函数和/或所述第二函数的所述第一父
类文件替换原始的所述第一父类文件,以获得插桩后的所述第二父类文件。
156.在一些实施例中,所述第一类文件包括:第一子类文件,其中,所述第一子类文件为第一父类文件的子类;
157.所述处理模块52,用于将所述第一函数和/或所述第二函数插入到所述第一子类文件,以获得插桩后的第二子类文件。
158.在一些实施例中,所述获取模块51,用于以下之一:
159.获取所述应用程序中所述消息所使用的所有所述第一类文件;
160.获取所述应用程序中所述消息所使用的至少一个所述第一类文件;
161.基于预配置文件,获取所述预配置文件指示的在所述应用程序中的至少一个所述第一类文件。
162.在一些实施例中,所述处理模块52,用于基于同一所述第一函数和/或同一所述第二函数对至少一个所述第一类文件进行插桩处理,以获得至少一个所述插桩后的所述第二类文件。
163.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
164.本公开实施例提供一种终端,包括:
165.处理器;
166.用于存储处理器可执行指令的存储器;
167.其中,所述处理器被配置为:用于运行所述可执行指令时,实现本公开任意实施例的所述的应用程序中消息处理方法。
168.本公开实施例提供一种服务器,包括:
169.处理器;
170.用于存储处理器可执行指令的存储器;
171.其中,所述处理器被配置为:用于运行所述可执行指令时,实现本公开任意实施例的所述的应用程序中消息处理方法。
172.所述存储器可包括各种类型的存储介质,该存储介质为非临时性计算机存储介质,在通信设备掉电之后能够继续记忆存储其上的信息。
173.所述处理器可以通过总线等与存储器连接,用于读取存储器上存储的可执行程序,例如,实现如图2至5所示的方法的至少其中之一。
174.本公开的实施例还提供了一种计算机可读存储介质,所述可读存储介质存储有可执行程序,其中,所述可执行程序被处理器执行时实现本公开任意实施例所述的应用程序中消息处理方法。例如,实现如图2至5所示的方法的至少其中之一。
175.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
176.图8是根据一示例性实施例示出的一种用于终端800的框图。例如,终端800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。这里,所述终端可以为上述任意实施例的ue。
177.参照图8,终端800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(i/o)的接口812,传感器组件814,以及
通信组件816。
178.处理组件802通常控制终端800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
179.存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在终端800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
180.电源组件806为终端800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为终端800生成、管理和分配电力相关联的组件。
181.多媒体组件808包括在所述终端800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
182.音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(mic),当终端800处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
183.i/o接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
184.传感器组件814包括一个或多个传感器,用于为终端800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为终端800的显示器和小键盘,传感器组件814还可以检测终端800或终端800一个组件的位置改变,用户与终端800接触的存在或不存在,终端800方位或加速/减速和终端800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
185.通信组件816被配置为便于终端800和其他设备之间有线或无线方式的通信。终端800可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施
例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
186.在示例性实施例中,终端800可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
187.在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由终端800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
188.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本技术旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
189.应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1