一种应用启动方法、装置、电子设备及存储介质与流程

文档序号:30183512发布日期:2022-05-26 16:07阅读:98来源:国知局
一种应用启动方法、装置、电子设备及存储介质与流程

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.保存模块,被配置为执行将当前主执行文件中的代码保存至内存中;
49.业务动态库确定模块,被配置为执行当检测到应用程序中业务事件的启动指令时,确定业务事件对应的业务动态库;
50.代码获取模块,被配置为执行若基础动态库为业务动态库加载时依赖的动态库,
通过动态查询方式对内存中的代码进行查询,得到基础动态库的代码;
51.加载模块,被配置为执行基于基础动态库的代码和业务动态库的代码加载业务动态库;
52.启动模块,被配置为执行启动业务事件。
53.在一些可能的实施例中,装置还包括:
54.编译模块,被配置为执行基于业务动态库中的代码进行编译,得到业务事件对应的程序包;
55.代码获取模块,被配置为执行若基础动态库为业务动态库加载时依赖的动态库,通过动态查询方式对内存中的代码进行查询,得到基础动态库的代码;
56.启动模块,被配置为执行基于基础动态库的代码启动程序包;启动业务事件。
57.在一些可能的实施例中,保存模块,被配置为执行:
58.确定当前主执行文件中的代码的预设删除方式;
59.基于预设删除方式删除当前主执行文件的代码中的预设代码,保留当前主执行文件的代码中的基础动态库中的代码;
60.将当前主执行文件的代码中的基础动态库中的代码保存至内存中。
61.根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现如上述第一方面中任一项的方法。
62.根据本公开实施例的第四方面,提供一种计算机可读存储介质,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本公开实施例的第一方面中任一项的方法。
63.根据本公开实施例的第五方面,提供一种计算机程序产品,计算机程序产品包括计算机程序,计算机程序存储在可读存储介质中,计算机设备的至少一个处理器从可读存储介质读取并执行计算机程序,使得计算机设备执行本公开实施例的第一方面中任一项的方法。
64.本公开的实施例提供的技术方案至少带来以下有益效果:
65.当检测到应用程序的启动指令,确定应用程序对应的当前主执行文件,对当前主执行文件中的代码进行加载,启动应用程序,当前主执行文件中的代码包括基础动态库的代码,基础动态库为历史主执行文件加载时依赖的动态库,历史主执行文件为当前主执行文件修改前的文件。本技术实施例可以通过将主执行文件依赖的基础动态库的代码集成到主执行文件中,可以避免应用程序启动时,因为系统额外的操作导致的过多时间消耗的问题,进而缓解了应用程序启动慢的问题。
66.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
67.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
68.图1是根据一示例性实施例示出的一种应用环境的示意图;
69.图2是根据一示例性实施例示出的一种应用启动方法的流程图;
70.图3是根据一示例性实施例示出的一种启动业务事件的流程图;
71.图4是根据一示例性实施例示出的一种启动业务事件的流程图;
72.图5是根据一示例性实施例示出的一种裁剪代码的流程图;
73.图6是根据一示例性实施例示出的一种应用启动装置的框图;
74.图7是根据一示例性实施例示出的一种用于应用启动的电子设备的框图。
具体实施方式
75.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
76.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的第一对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
77.本技术中有关用户的所有数据均是用户授权后的数据。
78.请参阅图1,图1是根据一示例性实施例示出的一种应用启动方法的应用环境的示意图,如图1所示,该应用环境可以包括客户端01,以及位于客户端01的某个应用程序中的主执行文件011和业务动态库012。
79.在一些可能的实施例中,上述的客户端01可以包括但不限于智能手机、台式计算机、平板电脑、笔记本电脑、智能音箱、数字助理、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、智能可穿戴设备等类型的客户端。也可以为运行于上述客户端的软体,例如应用程序、小程序等。可选的,客户端上运行的操作系统可以包括但不限于安卓系统、ios系统、linux、windows、unix等。
80.在一些可能的实施例中,当检测到应用程序的启动指令,确定应用程序对应的当前主执行文件,对当前主执行文件中的代码进行加载,启动应用程序,当前主执行文件中的代码包括基础动态库的代码,基础动态库为历史主执行文件加载时依赖的动态库,历史主执行文件为当前主执行文件修改前的文件。
81.图2是根据一示例性实施例示出的一种应用启动方法的流程图,如图2所示,应用启动方法可以应用于客户端,也可以应用于其他节点设备,包括以下步骤:
82.在步骤s201中,当检测到应用程序的启动指令,确定应用程序对应的当前主执行文件。
83.本技术实施例中,当前主执行文件就是该应用程序的主执行文件。且,每个应用程序都有其对应的主执行文件。主执行文件是应用程序的主入口,系统运行时会加载主执行文件中的代码,找到入口函数,并执行后续的逻辑。其中,代码也可以被称为符号,符号可以是类、方法和变量等相关内容。
84.本技术实施例中,步骤s201中的应用程序可以是ios系统中的应用程序,可以是安卓系统中的应用程序,也还可以是windows、lunix、unix等系统中的应用程序。在这里,不对
应用程序属于的系统类型做限定。
85.在一些可选的实施例中,某些系统的厂家为应用程序设置了单个可执行文件中内容的最大容量限制。比如,如果单个可执行文件中的内容超过60兆就无法应用。为了解决此问题,可以将应用程序调整为多个动态库的结构。进一步地,为了减少业务之间代码耦合,可以拆分出了更多的动态库。如此,在拆分之后,主执行文件通常会变为空壳,仅保留main()方法和动态库的依赖关系,以此来保障应用程序的运行。这样一来,不仅使得应用程序的代码架构得到了改善,还能够提高部分开发者的工作效率。
86.但是,随着业务代码量的增加,动态库数量也随之递增,这就使得启动应用程序时耗时出现了一定的劣化。对此,本技术实施例可以确定出启动阶段不需要的动态库,在应用程序运行过程中,通过组件化框架调用动态库提供的接口,按需加载对应的动态库。
87.举个例子,假设某个应用程序有一个主执行文件(0号主执行文件)和5个动态库,5个动态库中包括1号,2号,3号这3个基础动态库,还包括4号和5号对应应用程序不同业务事件的业务动态库。且,1号,2号,3号这3个基础动态库是主执行文件加载时依赖的动态库,同时,1号,2号,3号这3个基础动态库也是4号和5号业务动态库加载时依赖的动态库。
88.如此,当客户端检测到应用程序的启动指令,确定应用程序对应的主执行文件为0号主执行文件。当系统对主执行文件进行加载时,由于1号,2号,3号这3个基础动态库是主执行文件加载时依赖的动态库,不可避免地需要加载到3个基础动态中的代码。然而,启动主执行文件时,加载这3个基础动态库是非常耗时的。
89.本技术实施例中,耗时是因为系统会产生额外的操作。可选的,额外的操作可以指链接动态库的时候,系统会做额外的符号的rebase and bind,即重新定义符号的偏移量,这必然导致需要更多的时间消耗,使得用户在启动应用程序过程中感觉到应用启动过慢。
90.在步骤s203中,对当前主执行文件中的代码进行加载,启动应用程序,当前主执行文件中的代码包括基础动态库的代码;基础动态库为历史主执行文件加载时依赖的动态库;历史主执行文件为当前主执行文件修改前的文件。
91.本技术实施例中,为了避免加载3个基础动态中的代码导致的耗时的问题,客户端可以对之前的主执行文件进行修改。为了和修改后的主执行文件进行区分,这里将其称为历史主执行文件。
92.在一些可能的实施例中,客户端可以获取修改指令,该修改指令中包括历史主执行文件的标识信息以及依赖的基础动态库的标识信息(比如1号,2号,3号这3个基础动态库的标识信息),该修改指令用于指示客户端可以将基础动态库中的代码集成到历史主执行文件中,得到新的主执行文件,即当前主执行文件。
93.对应的,当客户端获取到修改指令后,可以根据历史主执行文件的标识信息确定出历史主执行文件,以及根据基础动态库的标识信息确定出该历史主执行文件加载时依赖的基础动态库。随后,客户端可以将基础动态库中的代码集成到历史主执行文件中,得到当前主执行文件。
94.一种可选的实施例中,客户端可以在将基础动态库中的代码集成到历史主执行文件后,仍然保留基础动态库。
95.图3是根据一示例性实施例示出的一种启动业务事件的流程图,如图3所示,包括:
96.在步骤s301中,当检测到应用程序中业务事件的启动指令时,确定业务事件对应
的业务动态库。
97.本技术实施例中,当客户端检测到应用程序中业务事件的启动指令时,可以确定该业务事件对应的业务动态库。
98.基于上述的例子继续阐述,当客户端检测到4号业务动态库对应的业务事件的启动指令时,可以确定该业务事件对应的业务动态库为4号。可选的,业务事件可以是应用程序中任意一个业务事件,比如创建事件(包括文件创建,图片创建等),比如下载事件(包括图片下载,文档下载),页面启动事件等等。
99.在步骤s303中,若基础动态库为业务动态库加载时依赖的动态库,调用基础动态库。
100.可选的,假设1号,2号,3号这3个基础动态库可以是4号动态库和当前主执行文件的共公内核。此时,基础动态库(1号,2号,3号这3个基础动态库)为业务动态库加载时依赖的动态库,可以调用基础动态库。
101.在步骤s305中,基于基础动态库的代码和业务动态库的代码加载业务动态库。
102.本技术实施例中,客户端可以基于基础动态库的代码和业务动态库的代码加载业务动态库。
103.在步骤s307中,启动业务事件。
104.举个例子,当客户端检测到应用程序中的下载业务事件的启动指令时,可以确定该下载业务事件对应的业务动态库(比如,4号业务动态库)。由于上文说明,1号,2号,3号这3个基础动态库也是4号业务动态库加载时依赖的动态库。因此,客户端可以调用3个基础动态库,基于上述的3个基础动态库的代码和业务动态库的代码加载业务动态库,启动下载业务事件。
105.虽然上述方式可以使得业务动态库依赖的基础动态库仍然存在,在加载业务动态库的时候,能够找到基础动态库的代码。然而上述式会使得保留业务动态库的同时,在当前主执行文件中又存在一份基础动态库的代码。这样,就会使得在应用程序产物中存在多份基础动态库的代码,浪费客户端内存,不符合实际需求。
106.一种可选的实施例中,客户端可以在将基础动态库中的代码集成到历史主执行文件后,删除基础动态库。
107.图4是根据一示例性实施例示出的一种启动业务事件的流程图,应用于删除基础动态库后,如图4所示,包括:
108.在步骤s401中,将当前主执行文件中的代码保存至内存中。
109.在一种可选的实施例中,当客户端利用当前主执行文件中的代码(包括基础动态库中的代码)启动应用程序之后,可以将当前主执行文件中的代码保存至内存中。
110.可选的,内存为客户端中的本地内存。
111.在一些可能的实施例中,某些系统在利用当前主执行文件启动应用程序的过程后,并不是将当前主执行文件中的所有代码都保存至内存中。而是为了减少产物的大小,基于规定的设置,可能将当前主执行文件中的所有代码都裁剪掉。
112.具体的,应用程序的编译启动过程可以包括,获取当前主执行文件中的所有代码,即获取源代码,随后基于源代码生成中间代码,再根据中间代码生成不同的可执行文件,随后,对不同的可执行文件和资源进行打包,得到应用程序的程序包,进而根据程序包启动应
用程序。
113.然而,为了减少产物的大小,客户端的系统可以在根据中间代码生成不同的可执行文件的时候,就将内存中保存的当前主执行代码中的所有代码裁剪掉。这就导致当业务事件启动时,找不到已经集成到当前主执行文件中的原属于基础动态库的代码。因此,当客户端需要对当前主执行文件中的代码进行裁剪时候,可以基于新的方式去进行代码裁剪,以保证当业务事件启动时,可以已经集成到当前主执行文件中的原属于基础动态库的代码。
114.图5是根据一示例性实施例示出的一种裁剪代码的流程图,应用于删除基础动态库后,如图5所示,包括:
115.在步骤s501中,确定当前主执行文件中的代码的预设删除方式。
116.可选的,当客户端需要对当前主执行文件中的代码进行裁剪时候,可以确定当前主执行文件中的代码的预设删除方式,即可以确定并不是对所有的代码进行裁剪的预设删除方式。
117.在步骤s503中,基于预设删除方式删除当前主执行文件的代码中的预设代码,保留当前主执行文件的代码中的基础动态库中的代码。
118.如此,客户端可以基于预设删除方式删除当前主执行文件的代码中的预设代码,也就是历史主执行文件中的代码,保留下当前主执行文件的代码中的原属于基础动态库中的代码。
119.在步骤s505中,将当前主执行文件的代码中的基础动态库中的代码保存至内存中。
120.可选的,若此时还未将当前主执行文件中的代码保存至内存中时,可以在对原属于历史主执行文件的代码进行裁剪后,将当前主执行文件的代码中的原属于基础动态库中的代码保存至内存中。
121.可选的,若在代码裁剪步骤前,客户端已经将当前主执行文件的所有代码保存内存中,客户端可以基于预设删除方式对代码进行裁剪后,留下前主执行文件的代码中的原属于基础动态库中的代码。
122.如此,客户端就可以在内存中保留需要继续使用的代码,即原属于基础动态库中的代码,进而保证业务动态库能够在运行时顺利通过动态查询方式找到其依赖的基础动态库中的代码,进行业务事件的加载。
123.然而,在实际的过程中,上述的实施例中,使用预设删除方式后,可能存在仍然会有部分原属于基础动态库中的代码会被裁剪掉。
124.通过分析,原属于基础动态库中的代码是属于应用程序中全局性的代码,而历史主执行文件中的代码是非全局性的代码。基于此,本技术实施例可以将上述实施例中的删除方式当作第一个方式,在裁剪前,可以添加一个识别方式,当客户端识别出某个代码是全局性代码后,可以打上不能裁剪的标识,如此,当通过预设删除方式进行删除是,打上不能裁剪标识的代码就不能被裁剪掉。
125.如此,客户端就可以在内存中保留需要继续使用的代码,即原属于基础动态库中的代码,进而保证业务动态库能够在运行时顺利通过动态查询方式找到其依赖的基础动态库中的代码,进行业务事件的加载。
126.在步骤s403中,当检测到应用程序中业务事件的启动指令时,确定业务事件对应的业务动态库。
127.本技术实施例中,当客户端检测到应用程序中业务事件的启动指令时,可以确定该业务事件对应的业务动态库。
128.基于上述的例子继续阐述,当客户端检测到4号业务动态库对应的业务事件的启动指令时,可以确定该业务事件对应的业务动态库为4号。可选的,业务事件可以是应用程序中任意一个业务事件,比如创建事件(包括文件创建,图片创建等),比如下载事件(包括图片下载,文档下载),页面启动事件等等。
129.在步骤s405中,若基础动态库为业务动态库加载时依赖的动态库,通过动态查询方式对内存中的代码进行查询,得到基础动态库的代码。
130.可选的,假设1号,2号,3号这3个基础动态库可以是4号动态库和当前主执行文件的共公内核。此时,基础动态库(1号,2号,3号这3个基础动态库)为业务动态库加载时依赖的动态库,可以通过动态查询方式对内存中的代码进行查询,得到基础动态库的代码。
131.在步骤s407中,基于基础动态库的代码和业务动态库的代码加载业务动态库。
132.本技术实施例中,客户端可以基于基础动态库的代码和业务动态库的代码加载业务动态库。
133.在步骤s409中,启动业务事件。
134.本技术实施例中,在设置为通过动态查询方式对内存中的代码进行查询,得到基础动态库的代码后,客户端在基于业务动态库中的代码进行编译,得到业务事件对应的程序包时,可以忽略掉找不到基础动态库的代码的问题,直接基于业务动态库中的代码进行编译,得到业务事件对应的程序包。随后,客户端可以通过动态查询方式对内存中的代码进行查询,得到基础动态库的代码,基于基础动态库的代码启动程序包,进而启动业务事件。
135.综上,通过将主执行文件依赖的基础动态库的代码集成到主执行文件中,可以避免应用程序启动时,因为系统额外的操作导致的过多时间消耗的问题,进而缓解了应用程序启动慢的问题。
136.其次,在将主执行文件依赖的基础动态库的代码集成到主执行文件,删除原来的基础动态库的代码可以使得应用程序产物中不存在多份基础动态库的代码,节约客户端内存。
137.图6是根据一示例性实施例示出的一种应用启动装置框图。参照图6,该装置包括文件确定模块601和启动模块602。
138.文件确定模块601,被配置为执行当检测到应用程序的启动指令,确定应用程序对应的当前主执行文件;
139.启动模块602,被配置为执行对当前主执行文件中的代码进行加载,启动应用程序;
140.当前主执行文件中的代码包括基础动态库的代码;基础动态库为历史主执行文件加载时依赖的动态库;历史主执行文件为当前主执行文件修改前的文件。
141.在一些可能的实施例中,装置还包括:
142.业务动态库确定模块,被配置为执行当检测到应用程序中业务事件的启动指令时,确定业务事件对应的业务动态库;
143.调用模块,被配置为执行若基础动态库为业务动态库加载时依赖的动态库,调用基础动态库;
144.加载模块,被配置为执行基于基础动态库的代码和业务动态库的代码加载业务动态库;
145.启动模块,被配置为执行启动业务事件。
146.在一些可能的实施例中,装置还包括:
147.基础动态库确定模块,被配置为执行确定历史主执行文件加载时依赖的基础动态库;
148.集成模块,被配置为执行将基础动态库中的代码集成到历史主执行文件中,得到当前主执行文件。
149.在一些可能的实施例中,装置还包括:
150.删除模块,被配置为执行删除基础动态库。
151.在一些可能的实施例中,装置还包括:
152.保存模块,被配置为执行将当前主执行文件中的代码保存至内存中;
153.业务动态库确定模块,被配置为执行当检测到应用程序中业务事件的启动指令时,确定业务事件对应的业务动态库;
154.代码获取模块,被配置为执行若基础动态库为业务动态库加载时依赖的动态库,通过动态查询方式对内存中的代码进行查询,得到基础动态库的代码;
155.加载模块,被配置为执行基于基础动态库的代码和业务动态库的代码加载业务动态库;
156.启动模块,被配置为执行启动业务事件。
157.在一些可能的实施例中,装置还包括:
158.编译模块,被配置为执行基于业务动态库中的代码进行编译,得到业务事件对应的程序包;
159.代码获取模块,被配置为执行若基础动态库为业务动态库加载时依赖的动态库,通过动态查询方式对内存中的代码进行查询,得到基础动态库的代码;
160.启动模块,被配置为执行基于基础动态库的代码启动程序包;启动业务事件。
161.在一些可能的实施例中,保存模块,被配置为执行:
162.确定当前主执行文件中的代码的预设删除方式;
163.基于预设删除方式删除当前主执行文件的代码中的预设代码,保留当前主执行文件的代码中的基础动态库中的代码;
164.将当前主执行文件的代码中的基础动态库中的代码保存至内存中。
165.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
166.图7是根据一示例性实施例示出的一种用于应用启动的装置700的框图。例如,装置700可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
167.参照图7,装置700可以包括以下一个或多个组件:处理组件702,存储器704,电力组件706,多媒体组件708,音频组件710,输入/输出(i/o)的接口712,传感器组件714,以及
通信组件716。
168.处理组件702通常控制装置700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
169.存储器704被配置为存储各种类型的数据以支持在设备700的操作。这些数据的示例包括用于在装置700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
170.电源组件706为装置700的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为装置700生成、管理和分配电力相关联的组件。
171.多媒体组件708包括在所述装置700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
172.音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(mic),当装置700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
173.i/o接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
174.传感器组件714包括一个或多个传感器,用于为装置700提供各个方面的状态评估。例如,传感器组件714可以检测到设备700的打开/关闭状态,组件的相对定位,例如所述组件为装置700的显示器和小键盘,传感器组件714还可以检测装置700或装置700一个组件的位置改变,用户与装置700接触的存在或不存在,装置700方位或加速/减速和装置700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
175.通信组件716被配置为便于装置700和其他设备之间有线或无线方式的通信。装置700可以接入基于通信标准的无线网络,如wifi,运营商网络(如2g、3g、4g或5g),或它们的
组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件716还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。
176.在示例性实施例中,装置700可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
177.在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器704,上述指令可由装置700的处理器720执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1