CN117743445B - 一种数据访问方法及电子设备 - Google Patents
一种数据访问方法及电子设备 Download PDFInfo
- Publication number
- CN117743445B CN117743445B CN202410179393.0A CN202410179393A CN117743445B CN 117743445 B CN117743445 B CN 117743445B CN 202410179393 A CN202410179393 A CN 202410179393A CN 117743445 B CN117743445 B CN 117743445B
- Authority
- CN
- China
- Prior art keywords
- content provider
- app
- target
- target content
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 122
- 230000008569 process Effects 0.000 claims abstract description 56
- 230000004044 response Effects 0.000 claims abstract description 36
- 230000004048 modification Effects 0.000 claims description 50
- 238000012986 modification Methods 0.000 claims description 50
- 238000004891 communication Methods 0.000 claims description 19
- 238000013475 authorization Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 7
- 239000002699 waste material Substances 0.000 abstract description 7
- 238000007726 management method Methods 0.000 description 42
- 230000006870 function Effects 0.000 description 16
- 239000011230 binding agent Substances 0.000 description 14
- 238000012217 deletion Methods 0.000 description 11
- 230000037430 deletion Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000000694 effects Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 101150053844 APP1 gene Proteins 0.000 description 2
- 101100055496 Arabidopsis thaliana APP2 gene Proteins 0.000 description 2
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 2
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 2
- 101100016250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GYL1 gene Proteins 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 102100038359 Xaa-Pro aminopeptidase 3 Human genes 0.000 description 1
- 101710081949 Xaa-Pro aminopeptidase 3 Proteins 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据访问方法及电子设备,涉及数据共享技术领域,能够减少无效拉起ContentProvider所在的进程的概率,进而可以减少无效拉起进程造成的内存资源的浪费。该方法包括:第一APP响应于第一操作,向电子设备发送第一数据请求;其中,第一数据请求用于请求查询第二APP中的目标内容提供器对应的共享数据;电子设备响应于第一数据请求,获取目标内容提供器的状态;电子设备在目标内容提供器的状态为激活状态的情况下,拉起目标内容提供器所在的进程;电子设备在目标内容提供器所在的进程被拉起的情况下,向目标内容提供器发送查询请求;目标内容提供器响应于查询请求,向第一APP发送目标数据。
Description
技术领域
本申请涉及数据共享技术领域,尤其涉及一种数据访问方法及电子设备。
背景技术
目前,安卓TM(AndroidTM)操作系统提供有内容提供器(ContentProvider),用于提供跨应用程序的数据共享和访问机制,实现在电子设备中的不同应用程序之间共享数据。具体地,现有技术中电子设备可以接收一个应用程序(或称为调用APP)发送的第一数据请求,该第一数据请求用于请求查询电子设备中的任意一个ContentProvider对应的共享数据。然后,电子设备响应于该第一数据请求,先将该ContentProvider所在的进程拉起(例如,拉起该ContentProvider所属的被调用APP),再执行该ContentProvider查询共享数据,并向调用APP返回共享数据的步骤。
然而,电子设备中的大多数ContentProvider可能没有可访问的共享数据,此时,电子设备将该ContentProvider所在的进程拉起后也查询不到数据,导致无效的拉起该ContentProvider所在的进程。拉起该内容提供器所在的进程还占用了电子设备的内存资源,造成内存资源的浪费。
发明内容
本申请实施例提供一种数据访问方法及电子设备,能够减少无效拉起ContentProvider所在的进程的概率,进而可以减少无效拉起进程造成的内存资源的浪费。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种数据访问方法,该方法应用于电子设备,电子设备包括第一应用程序APP和第二APP,该方法可以包括:第一APP响应于用户输入的第一操作,向电子设备发送第一数据请求;其中,第一操作用于触发获取第二APP的目标数据;第一数据请求用于请求查询第二APP中的目标ContentProvider对应的共享数据,目标ContentProvider对应的共享数据包括目标数据;然后,电子设备响应于第一数据请求,获取目标ContentProvider的状态;电子设备在目标ContentProvider的状态为激活状态的情况下,拉起目标ContentProvider所在的进程;其中,目标ContentProvider的状态为激活状态用于表示目标ContentProvider对应的共享数据被修改过;电子设备在目标ContentProvider所在的进程被拉起的情况下,向目标ContentProvider发送查询请求;目标ContentProvider响应于查询请求,向第一APP发送目标数据。
可以理解的是,电子设备接收第一数据请求后,可以先判断该第一数据请求所指示的目标ContentProvider的状态是否为激活状态。如果目标ContentProvider的状态为激活状态,表示目标ContentProvider对应的共享数据被修改过,目标ContentProvider存在可访问的共享数据的可能性较高,则电子设备可以拉起目标ContentProvider所在的进程,再通过目标ContentProvider查询共享数据。由于目标ContentProvider存在可访问的共享数据的可能性较高,因此,拉起目标ContentProvider所在的进程后通过目标ContentProvider查询共享数据时大概率可以获取到目标ContentProvider对应的共享数据。
综上可知,采用本方案,可以减少无效拉起内容提供器所在的进程的概率,进而减少了无效拉起进程造成的内存资源的浪费。
结合第一方面,在一种可能的实现方式中,在上述获取目标ContentProvider的状态之后,方法还包括:电子设备在目标ContentProvider的状态为未激活状态的情况下,向第一APP发送空值。
可以理解的是,如果目标ContentProvider的状态为非激活状态,表示目标ContentProvider对应的共享数据未被修改过,极有可能不存在目标ContentProvider可访问的共享数据,则电子设备可以不执行拉起目标ContentProvider所在的进程的步骤,并向第一APP返回空值。在不存在目标ContentProvider可访问的共享数据的情况下不执行拉起目标ContentProvider所在的进程的步骤,可以避免无效拉起内容提供器所在的进程,进而避免了无效拉起进程造成的内存资源的浪费。
结合第一方面,另一种可能的实现方式中,上述拉起目标ContentProvider所在的进程,包括:拉起第二APP。
该实现方式描述了拉起目标ContentProvider所在的进程的一种实现方式。
结合第一方面,另一种可能的实现方式中,上述电子设备响应于第一数据请求,获取目标ContentProvider的状态,包括:电子设备响应于第一数据请求,向第一APP发送与目标ContentProvider关联的内容解析器(ContentResolver)的接口信息;第一APP根据ContentResolver的接口信息,访问ContentResolver中的查询接口;ContentResolver响应于第一APP对查询接口的访问,获取目标ContentProvider的状态;
其中,上述电子设备在目标ContentProvider所在的进程被拉起的情况下,向目标ContentProvider发送查询请求,包括:ContentResolver在目标ContentProvider所在的进程被拉起的情况下,响应于第一APP对查询接口的访问,向目标ContentProvider发送查询请求。
该实现方式描述了电子设备在目标ContentProvider所在的进程被拉起的情况下,向目标ContentProvider发送查询请求的一种实现方式。
结合第一方面,另一种可能的实现方式中,电子设备还包括第三APP,上述方法还包括:第三APP响应于用户输入的第二操作,向电子设备发送第二数据请求;其中,第二操作用于触发修改第二APP的目标数据;第二数据请求用于请求修改目标ContentProvider对应的共享数据;电子设备响应于第二数据请求,获取目标ContentProvider的状态;电子设备在目标ContentProvider的状态为未激活状态的情况下,将目标ContentProvider的状态更新为激活状态,并将目标ContentProvider的状态保存至缓存文件中。
可以理解的是,电子设备可以保存电子设备中的每个ContentProvider的状态(包括目标ContentProvider的状态),并且,每个内容提供器的状态可以默认为未激活状态。电子设备还可以在对任意一个内容提供器(如,目标ContentProvider)对应的共享数据执行修改操作的情况下,更新任意一个内容提供器(如,目标ContentProvider)的状态,以使得任意一个内容提供器(如,目标ContentProvider)的状态可以表征任意一个内容提供器(如,目标ContentProvider)对应的共享数据是否被修改过。
其次,电子设备可以在缓存文件中保存电子设备中每个ContentProvider的状态,以实现持久化保存电子设备中每个ContentProvider的状态。电子设备停止工作(例如,关机)的情况下,该缓存文件保存的每个ContentProvider的状态不会丢失。进而,在重启电子设备的时候电子设备可以通过加载该缓存文件,以读取该缓存文件中的每个ContentProvider的状态。
结合第一方面,另一种可能的实现方式中,上述电子设备响应于第二数据请求,获取目标ContentProvider的状态,包括:电子设备响应于第二数据请求,向第三APP发送与目标ContentProvider关联的ContentResolver的接口信息;第三APP根据ContentResolver的接口信息,访问ContentResolver中的修改接口;ContentResolver响应于第三APP对修改接口的访问,获取目标ContentProvider的状态。
该实现方式描述了电子设备可以在第三APP访问ContentResolver中的修改接口的情况下,获取目标ContentProvider的状态,进而可以根据目标ContentProvider的状态判断是否需要更新目标ContentProvider的状态。
结合第一方面,另一种可能的实现方式中,上述方法还包括:ContentResolver响应于第三APP对修改接口的访问,拉起目标ContentProvider所在的进程;ContentResolver在目标ContentProvider所在的进程被拉起的情况下,向目标ContentProvider发送修改请求;目标ContentProvider响应于修改请求,修改目标数据。
该实现方式描述了第三APP通过访问修改接口,实现修改目标ContentProvider对应的共享数据(包括目标数据)的过程。
结合第一方面,另一种可能的实现方式中,第二数据请求包括:用于请求向目标ContentProvider对应的共享数据写入数据的请求,用于请求更新目标ContentProvider对应的共享数据的请求,或用于请求删除目标ContentProvider对应的共享数据的请求。
结合第一方面,另一种可能的实现方式中,上述方法还包括:电子设备在电子设备下载第二APP后,获取第二APP提供的ContentProvider的授权信息;第二APP提供的ContentProvider包括目标ContentProvider;电子设备将第二APP提供的ContentProvider的状态设置为未激活状态,并将第二APP提供的ContentProvider的状态保存在缓存文件中。
可以理解的是,电子设备在更新任意一个ContentProvider(如,目标ContentProvider)的状态之前,可以在检测到电子设备新增任意一个ContentProvider(如,目标ContentProvider)的时候(例如,下载第二APP的时候),确定任意一个ContentProvider(如,目标ContentProvider)的状态为默认的未激活状态,并保存在缓存文件中。
第二方面,提供了一种电子设备,该电子设备包括:处理器、存储器和通信接口。存储器和通信接口与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。其中,当处理器执行计算机指令时,使得该电子设备执行如上述第一方面中任一项所述的数据访问方法。
第三方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令。当计算机指令在电子设备上运行时,使得该电子设备执行如上述第一方面中任一项所述的数据访问方法。
第四方面,提供了一种包含计算机指令的计算机程序产品,当该计算机指令在电子设备上运行时,使得电子设备执行如上述第一方面中任一项所述的数据访问方法。
第五方面,提供了一种装置(例如,该装置可以是芯片系统),该装置包括处理器,用于支持电子设备实现上述第一方面所述的数据访问方法。在一种可能的设计中,该装置还包括存储器,该存储器,用于保存电子设备必要的程序指令和数据。该装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。
其中,第二方面至第五方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的内容提供器的应用场景示意图;
图2为现有技术提供的通过内容解析器访问内容提供器的流程示意图;
图3为现有技术提供的获取内容解析器的接口信息的流程示意图;
图4为现有技术提供的设置APP与图库APP进行跨进程通信的流程示意图;
图5为本申请实施例提供的电子设备的系统结构图;
图6为本申请实施例提供的一种数据访问方法的流程图;
图7为本申请实施例提供的一种跨应用程序访问数据的操作示意图一;
图8为本申请实施例提供的一种跨应用程序访问数据的操作示意图二;
图9为本申请实施例提供的一种内容提供器的状态更新示意图;
图10为本申请实施例提供的一种内容提供器的状态获取示意图;
图11为本申请实施例提供的一种电子设备的结构示意图;
图12为本申请实施例提供的一种芯片系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
为便于对申请的技术方案进行,以下首先在对本申请所涉及到的一些概念进行说明。
(1)AndroidTM持久化技术:是指将电子设备中每个APP的数据存储在电子设备上,以便在该APP关闭或电子设备重启的情况下能够继续访问该APP的数据。
可选地,常见的AndroidTM持久化技术包括:文件存储和共享偏好存储(或称为shared preferences存储)等。
其中,文件存储是将任意一个APP的数据存储在电子设备的文件系统(例如,files)中,可以通过读写文件的方式进行数据的存取。采用这种存储方式存储的数据只能被存储的应用程序访问,其他应用程序无法直接访问。
SharedPreferences存储是一种基于键值对的存储方式,适合存储简单的配置信息或用户偏好设置。采用这种存储方式存储的数据也只能被存储的应用程序访问。
需要说明的是,每个APP采用AndroidTM持久化技术存储的数据,只能该APP访问。除该APP以外的其他APP无法访问存储的该APP的数据。然而,电子设备中一些APP的数据需要在多个APP之间共享。例如,电子设备中的设置APP使用图库APP中的图片;又例如,电子设备中的第三方通讯类APP使用电话APP中的电话号码。
(2)内容提供器(ContentProvider):是AndroidTM操作系统提供的一种组件,用于提供跨应用程序的数据共享和访问机制,实现在不同应用程序之间共享数据。具体地,电子设备中的任意一个APP(或称为被调用APP)可以设置内容提供器,其他APP(或称为调用APP)可以通过被调用APP的 内容提供器访问被调用APP的数据。被调用APP通过使用内容提供器,还可以定义数据的访问权限,只有授权的调用APP才能访问被调用APP的数据,保证了被访问的数据的安全性。
示例性地,请参考图1所示的内容提供器的应用场景示意图。如图1所示,电子设备可以包括APP1、APP2、APP3和APP4。以被调用APP为APP4为例,APP4可以设置有内容提供器。调用APP(包括APP1、APP2和APP3)可以向APP4的内容提供器发送数据访问请求。在确定调用APP有数据的访问权限的情况下,APP4的内容提供器可以响应于调用APP发送的数据访问请求,对内容提供器对应的共享数据执行相应的操作。
其中,数据访问请求可以包括:查询(query)请求、写入(insert)请求、删除(delete)请求和更新(update)请求等。进而,APP4的内容提供器可以响应于查询请求,对该内容提供器对应的共享数据执行查询操作,例如,读取该内容提供器对应的共享数据并向调用APP发送该共享数据。APP4的内容提供器可以响应于写入请求,对该内容提供器对应的共享数据执行写入操作,例如,将新数据插入到该共享数据中。APP4的内容提供器可以响应于删除请求,对该内容提供器对应的共享数据执行删除操作,例如,从该共享数据中删除数据项。APP4的内容提供器可以响应于更新请求,对该内容提供器对应的共享数据执行更新操作,例如,修改该共享数据中的数据项。
可选地,查询(query)请求、写入(insert)请求、删除(delete)请求或更新(update)请求可以统称为QIDU请求。查询操作、写入操作、删除操作或更新操作可以统称为QIDU操作。APP4的内容提供器对该内容提供器对应的共享数据执行QIDU操作,也可以实现对该内容提供器对应的共享数据执行CRUD操作。CRUD操作包括:数据读取(Read)操作、数据创建(Create)操作、数据更新(Update)操作和数据删除(Delete)操作。
可选地,APP4可以设置一个或多个内容提供器。如果APP4设置多个内容提供器,该多个内容提供器对应的共享数据可以不同。例如,电话APP可以包括:一个内容提供器和另一个内容提供器,并且,一个内容提供器对应的共享数据是通讯录,另一个内容提供器对应的共享数据是通话记录。
需要说明的是,图1中以APP4的一个内容提供器为例介绍内容提供器的使用场景。如图1所示,APP4的一个内容提供器对应的共享数据可以包括多种存储方式存储的数据,具体包括网络(Internet)存储的数据、数据库存储的数据、以及文件存储的数据。其中,数据库可以包括轻型数据库(SQLite)。文件存储的数据可以包括电子设备的文件系统(files)存储的数据。
(3)内容解析器(ContentResolver):是被调用APP的内容提供器对外提供的接口。调用APP可以通过内容提供器提供的内容解析器,与该内容提供器通信。内容解析器提供了一组方法(例如,查询、写入、更新和删除等),用于向内容提供器发送数据访问请求,以实现对共享数据执行相应的操作。
其中,内容解析器可以包括:查询接口、写入接口、删除接口和更新接口。调用APP访问内容解析器中的任意一个接口,则内容解析器可以向该内容提供器发送与该任意一个接口对应的操作。例如,与查询接口对应的查询操作,与写入接口对应的写入操作、与删除接口对应的删除操作,以及与更新接口对应的更新操作。
示例性地,请参考图2所示的现有技术中通过内容解析器访问内容提供器的流程示意图。如图2所示,调用APP通过内容解析器访问被调用APP的内容提供器的过程可以包括:S11、调用APP向操作系统(例如,AndroidTM操作系统)发送数据请求(或称为跨应用数据请求);该数据请求用于请求访问任意一个内容提供器对应的共享数据,例如,该数据请求用于请求查询、写入、更新或删除任意一个内容提供器对应的共享数据;S12、操作系统中的关键类(或称为Context)响应于该数据请求,向调用APP返回该内容提供器提供的内容解析器的接口信息;例如,Context向调用APP发送“return ContentResolver”; S13、操作系统还响应于该数据请求,拉起该内容提供器所属的APP(或称为被调用APP);S14、调用APP根据该内容解析器的接口信息,访问操作系统中的内容解析器,并通过内容解析器向该内容提供器发送QIDU请求;S15、该内容提供器响应于该QIDU请求,对该内容提供器对应的共享数据执行相应的操作。
在一些实施例中,被调用APP除了提供内容提供器,还可以提供与该内容提供器关联的内容提供器的引用对象(或称为Binder对象),以使被调用APP通过该Binder对象与调用APP中的内容提供器进行数据交互,实现了进程间通信(inter-process communication,IPC)。
其中,该内容提供器提供的内容解析器封装了该Binder对象的细节。内容解析器可以使用该Binder对象与该内容提供器进行通信,发送QIDU请求,并获取对应的结果。因此,内容解析器依赖于该Binder对象来实现真正的跨进程通信(即IPC)。
示例性地,结合图2,请参考图3所示的现有技术中获取内容解析器的接口信息的流程示意图。如图3所示,上述S11-S14可以包括S21-S27,在S27之后还可以包括S28。
S21、调用APP向操作系统发送第一数据请求;该第一数据请求可以用于请求查询任意一个内容提供器对应的共享数据。
示例性地,以调用APP为设置APP,被调用APP为图库APP为例,请参考图4所示的现有技术中设置APP与图库APP进行跨进程通信的流程示意图。如图4所示,S21可以包括:S31、设置APP中的壁纸设备模块可以向操作系统发送第一数据请求;该第一数据请求可以用于请求查询图库APP的图片。
S22、操作系统响应于该第一数据请求,确定该第一数据请求所指示的内容提供器的宿主APP(即被调用APP)。
示例性地,如图4所示,S22可以包括:S32、操作系统响应于该第一数据请求,确定该第一数据请求所指示的图库APP和目标内容提供器。该目标内容提供器可以是图库APP中与图片对应的内容提供器。
S23、操作系统拉起内容提供器的宿主APP(即被调用APP);再启动该内容提供器的回调。
被调用APP中的该内容提供器的回调被启动的情况下,该内容提供器可以向操作系统返回该内容提供器关联的内容提供器的Binder对象。
示例性地,如图4所示,S23可以包括:S33、操作系统拉起图库APP,再启动目标内容提供器的回调。在目标内容提供器的回调被启动的情况下,该目标内容提供器可以向操作系统返回该目标内容提供器关联的内容提供器的Binder对象,即执行S24。
S24、被调用APP向操作系统发送该内容提供器关联的内容提供器的引用对象。
示例性地,如图4所示,S24可以包括:S34、图库APP中的目标内容提供器向操作系统返回目标内容提供器关联的内容提供器的引用对象(即Binder对象)。
S25、操作系统根据该引用对象,生成内容解析器的接口信息。
示例性地,如图4所示,S25可以包括S35。
S26、操作系统向调用APP发送内容解析器的接口信息。
示例性地,如图4所示,S26可以包括:S36、操作系统向设置APP发送内容解析器的接口信息。
S27、调用APP根据内容解析器的接口信息,访问内容解析器中的查询接口,以触发向内容提供器发送查询请求。
示例性地,如图4所示,S27可以包括:S37、设置APP中的壁纸设备模块根据内容解析器的接口信息,向目标内容提供器发送查询请求。
其中,壁纸设备模块可以根据内容解析器的接口信息,向目标内容提供器发送查询请求可以包括:根据内容解析器的接口信息访问内容解析器中的查询接口,以触发内容解析器向目标内容提供器发送查询请求。
S28、该内容提供器响应于该查询请求,向调用APP发送该内容提供器对应的共享数据。
示例性地,如图4所示,S28可以包括:S38、目标内容提供器可以响应于该查询请求,向设置APP中的壁纸设备模块发送图库APP中的图片。然后,壁纸设备模块可以根据图库APP中的图片,设置电子设备的壁纸。
可以理解的是,现有技术中电子设备的操作系统接收针对任意一个内容提供器的第一数据请求后,需要先将任意一个内容提供器所在的进程拉起(例如,拉起被调用APP),再执行该内容提供器查询共享数据,并向调用APP返回共享数据的步骤。然而,电子设备中的大多数内容提供器可能没有可访问的共享数据,此时,电子设备将内容提供器所在的进程拉起后也查询不到数据,导致无效的拉起内容提供器所在的进程。拉起内容提供器所在的进程还占用了电子设备的内存资源,造成内存资源的浪费。
针对上述问题,本申请实施例提供一种数据访问方法,电子设备可以保存电子设备中的每个内容提供器的状态,并且,每个内容提供器的状态可以默认为未激活状态。如果电子设备中的任意一个内容提供器对应的共享数据已修改,则电子设备可以更新任意一个内容提供器的状态为激活状态。进而,电子设备接收第一数据请求后,可以先判断该第一数据请求所指示的内容提供器的状态是否为激活状态。如果该第一数据请求所指示的内容提供器的状态为激活状态,表示该内容提供器对应的共享数据被修改过,该内容提供器存在可访问的共享数据的可能性较高,则电子设备可以拉起该内容提供器所在的进程,再通过该内容提供器查询共享数据。由于该内容提供器存在可访问的共享数据的可能性较高,因此,拉起该内容提供器所在的进程后通过该内容提供器查询共享数据时大概率可以获取到该内容提供器对应的共享数据。
综上可知,采用本方案,可以减少无效拉起内容提供器所在的进程的概率,进而减少了无效拉起进程造成的内存资源的浪费。
本申请实施例提供的数据访问方法可应用于电子设备。电子设备可以是手机、平板电脑、笔记本电脑、以及芯片系统等等。本申请实施例提供的数据访问方法的执行主体还可以为数据访问装置。该数据访问装置可以为电子设备,或者,该数据访问装置可以为电子设备中的用于执行数据访问方法的控制单元。本申请实施例对此不做任何限制。
示例性地,以电子设备为手机,以及操作系统为AndroidTM操作系统为例,介绍本申请实施例提供的电子设备的系统结构图。电子设备的系统可采用分层架构。如图5所示,电子设备的系统可以包括应用程序层,应用程序框架层(或称为框架层framework)、硬件抽象层(hardware abstraction layer,HAL)和驱动层(或称为内核层)。层与层之间通过软件接口通信。
其中,应用程序层可以包括一系列APP。这一系列APP可以分为手机自带的系统APP、以及用户自行下载到手机中的第三方APP。例如,如图5所示,系统APP可以包括设置APP、图库APP和电话APP等;第三方APP可以包括:通讯类APP和购物类APP等。
其中,电子设备中的任意一个APP可以设置有一个或多个内容提供器,并且,任意一个APP中的每个内容提供器可以是基于AndroidTM操作系统原生的内容提供器(或称为原生内容提供器)生成的。具体地,任意一个APP中的每个内容提供器可以在原生内容提供器提供的方法基础上增加具体的业务处理逻辑,以满足当前的业务需求。
需要说明的是,本申请实施例中提及的“内容提供器”均是指任意一个APP提供的,不是原生内容提供器。
框架层为应用程序层的APP提供应用编程接口(application programminginterface,API)和编程框架。框架层包括一些预先定义的函数。例如,框架层可以包括:系统服务(或称为SystemServer)、关键类(即Context)、广播接收器、多个内容提供器中各个内容提供器对应的内容解析器、以及内容提供器的状态管理模块(或称为provider statemanager)等,本申请实施例对此不做任何限制。
其中,SystemServer负责启动和管理各种系统级别的服务,例如活动管理服务(activity manager service,AMS)等。
广播接收器用于接收和响应系统或应用程序发出的广播消息,从而触发特定的操作。
每个内容提供器对应的内容解析器可以包括查询接口、写入接口、删除接口和更新接口。查询接口可用于对内容提供器对应的共享数据执行查询操作。写入接口可用于对内容提供器对应的共享数据执行写入操作。删除接口可用于对内容提供器对应的共享数据执行删除操作。更新接口可用于对内容提供器对应的共享数据执行更新操作。
Context提供了访问应用程序的资源和执行各种操作的方法。例如,Context可以保存电子设备中各个APP的内容提供器。电子设备的操作系统接收针对任意一个内容提供器的数据共享请求后,可以通过Context确定任意一个内容提供器所属的被调用APP,再拉起该被调用APP的进程。
状态管理模块可用于保存电子设备中的每个内容提供器的状态,并且,该状态管理模块保存的每个内容提供器的状态可以默认为未激活状态。如果电子设备中的任意一个内容提供器对应的共享数据被修改,则该状态管理模块可以更新任意一个内容提供器的状态为激活状态。
HAL层是位于操作系统的内核层与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。HAL层提供标准界面,向更高级别的 Java API 框架(即框架层)显示设备硬件功能。HAL 层包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面。例如,HAL层包括显示HAL,显示HAL负责与手机中实现显示功能的硬件设备(例如,显示屏)进行交互。
内核层是硬件和软件之间的层。内核层可以包含显示驱动,图像传感器驱动等,本申请不做限定。显示驱动用于控制显示器显示。图像传感器驱动用于控制图像传感器采集图像。
基于图5所示的电子设备的系统结构,对本申请实施例提供的数据访问方法进行介绍。
请参考图6,本申请实施例提供的一种数据访问方法可应用于电子设备。该电子设备可以包括:多个APP和状态管理模块。其中,多个APP可以包括第一APP和第二APP。如图6所示,本申请实施例提供的一种行数据访问方法可以包括S401-S411。
S401、第一APP接收用户输入的第一操作,该第一操作用于触发获取第二APP的目标数据。
电子设备在前台运行第一APP的情况下,第一APP可以接收用户输入的第一操作。该第一操作用于触发获取第二APP提供的任意一种数据(或称为目标数据)。第一APP和第二APP可以不同。可选地,第一APP请求获取第二APP的目标数据,则第一APP可以称为调用APP,第二APP可以称为被调用APP。
示例性地,以第一APP为设置APP,第二APP为图库APP为例,如图7中的(a)所示,电子设备显示设置APP的第一界面510。该第一界面510可以包括用于触发获取图片的选项511。设置APP可以接收用户在第一界面510输入的对该选项511的点击操作。对该选项511的点击操作用于触发获取图库APP中的图片。可选地,对该选项511的点击操作可以称为图片选择操作,该图像选择操作属于第一操作。
示例性地,以第一APP为通讯类APP,第二APP为电话APP为例,如图8中的(a)所示,电子设备显示通讯类APP的第一界面610。该第一界面610可以包括触发获取通讯录的选项611。通讯类APP可以接收用户在第一界面610输入的对该选项611的点击操作。对该选项611的点击操作用于触发获取电话APP中的通讯录。可选地,对该选项611的点击操作可以称为通讯录获取操作,该通讯录获取操作属于第一操作。
S402、第一APP响应于第一操作,向关键类发送第一数据请求;第一数据请求用于指示目标内容提供器。
第一APP响应于该第一操作,确定与目标数据对应的目标内容提供器,并向电子设备中的操作系统(例如,AndroidTM操作系统)发送第一数据请求。该第一数据请求用于请求查询目标内容提供器对应的共享数据。目标内容提供器对应的共享数据是目标数据。具体地,第一APP可以向操作系统中的关键类(即Context)发送第一数据请求。该第一数据请求可以包括一个授权信息(即authority),该授权信息用于标识目标内容提供器,例如,该授权信息可以是目标内容提供器的名称。可选地,用于标识目标内容提供器的授权信息可以目标授权信息。
本申请实施例中,电子设备中的Context可以包括:电子设备中各个APP提供的内容提供器的授权信息(即authority)、以及每个内容提供器对应的内容解析器的接口信息。其中,每个内容提供器的authority可以包含在一个统一资源标识符(uniform resourceidentifier,URI)中,并且,该内容提供器对应的共享数据可以包括该URI所指示的数据(即网络存储的数据)。
示例性地,第一APP向Context发送“get ContentProvider”、以及目标内容提供器的目标授权信息(即目标authority)。
示例性地,继续以第一APP为设置APP,第二APP为图库APP为例,设置APP响应于对该选项511的点击操作,向Context发送第一数据请求;该第一数据请求所指示的目标内容提供器是图库APP中与图片对应的内容提供器。
示例性地,继续以第一APP为通讯类APP,第二APP为电话APP为例,通讯类APP响应于对该选项611的点击操作,向Context发送第一数据请求;该第一数据请求所指示的目标内容提供器是电话APP中与通讯录对应的内容提供器。
S403、关键类响应于该第一数据请求,向第一APP返回内容解析器的接口信息。
关键类(即Context)可以根据该第一数据请求中的目标授权信息,确定目标授权信息所指示的内容提供器对应的内容解析器的接口信息,并向第一APP返回该内容解析器的接口信息。
示例性地, Context向第一APP发送“return ContentResolver”、以及内容解析器的接口信息。
在一些实施例中,S403可以包括:操作系统响应于该第一数据请求,启动目标内容提供器的回调;然后,第二APP中的目标内容提供器向操作系统发送目标内容提供器关联的内容提供器的Binder对象;操作系统根据该Binder对象,生成内容解析器的接口信息;操作系统向第一APP发送内容解析器的接口信息。
其中,目标内容提供器在启动目标内容提供器的回调的情况下,可以从BinderCache中获取目标内容提供器关联的内容提供器的Binder对象。Binder Cache用于缓存电子设备中各个内容提供器关联的内容提供器的Binder对象,因此,电子设备可以直接使用Binder Cache中缓存的Binder对象,无需执行创建Binder对象的步骤。从而可以提高电子设备向第一APP发送内容解析器的接口信息的速度。
S404、第一APP根据该内容解析器的接口信息,访问内容解析器中的查询接口。
第一APP响应于触发获取第二APP的目标数据的第一操作,获取该内容解析器的接口信息后,可以根据该内容解析器的接口信息,访问内容解析器中的查询接口(即内容解析器.query)。
S405、内容解析器响应于第一APP对查询接口的访问,向状态管理模块发送状态获取请求,状态获取请求用于请求获取目标内容提供器的状态。
第一APP向电子设备中的操作系统(例如,AndroidTM操作系统)发送第一数据请求后,操作系统响应于该第一数据请求,没有直接拉起目标内容提供器的进程,而是先请求获取目标内容提供器的状态。进而操作系统可以基于目标内容提供器的状态确定是否拉起目标内容提供器的进程。
可选地,内容解析器除了向状态管理模块发送状态获取请求,也可以触发操作系统向状态管理模块发送状态获取请求。
S406、状态管理模块响应于状态获取请求,向内容解析器发送目标内容提供器的状态。
状态管理模块响应于状态获取请求,可以返回目标内容提供器的状态。例如,状态管理模块响应于内容解析器发送的状态获取请求,可以向内容解析器返回目标内容提供器的状态。如果目标内容提供器的状态为未激活状态,则电子设备可以不拉起目标内容提供器的进程,并执行S407。如果目标内容提供器的状态为激活状态,则电子设备可以对目标内容提供器对应的共享数据执行查询操作,即执行S408-S411。
其中,如果目标内容提供器的状态为激活状态,则电子设备可以执行用于处理数据请求的开源操作系统开发项目(android open source project,AOSP)。例如,该AOSP可以包括S12-S16。
本申请实施例中,如果目标内容提供器对应的共享数据已修改,则目标内容提供器的状态为激活状态。如果目标内容提供器对应的共享数据未修改过,则目标内容提供器的状态为默认的未激活状态。
其中,目标内容提供器对应的共享数据已修改可以包括:对目标内容提供器对应的共享数据执行修改操作。该修改操作可以是指除查询操作以外的其他操作,例如,写入操作、批量写入操作、删除操作和更新操作。
S407、若目标内容提供器的状态为未激活状态,则内容解析器向第一APP发送空值。
若目标内容提供器的状态为未激活状态,则操作系统可以向第一APP返回空值。例如,操作系统中的内容解析器向第一APP返回空值。进而,第一APP接收空值后,可以显示提示信息,该提示信息用于提示未获取到目标数据。
示例性地, 内容解析器向第一APP发送“return null”。null表示没有值、无效或未定义的状态。
可选地,内容解析器除了向第一APP发送空值,也可以触发操作系统向第一APP发送空值。
S408、若目标内容提供器的状态为激活状态,则内容解析器拉起目标内容提供器所属的第二APP。
若目标内容提供器的状态为激活状态,表示目标内容提供器对应的共享数据被修改过,目标内容提供器存在可访问的共享数据的可能性较高,则内容解析器可以拉起目标内容提供器的进程,例如,拉起目标内容提供器的宿主应用程序(Host App),Host App可以是目标内容提供器所属的第二APP。
进一步地,目标内容提供器的宿主APP被拉起后,目标内容提供器提供的功能可以正常使用,例如,目标内容提供器可以接收查询操作,并对目标内容提供器对应的共享数据执行查询操作,即执行S409-S411。
在一些实施例中,内容解析器可以在系统服务(即SystemServer)中查询目标内容提供器的宿主APP;然后,拉起目标内容提供器的宿主APP。
可选地,内容解析器除了拉起目标内容提供器所属的第二APP,也可以触发操作系统拉起目标内容提供器所属的第二APP。
S409、内容解析器向第二APP中的目标内容提供器发送查询请求。
操作系统响应于第一APP对内容解析器中的查询接口的访问,在目标内容提供器所在的进程被拉起(例如,第二APP被拉起)后,可以向第二APP中的目标内容提供器发送查询请求。
可选地,内容解析器除了向目标内容提供器发送查询请求,也可以触发操作系统向目标内容提供器发送查询请求。
本申请实施例中,内容解析器可以包括:查询接口(即内容解析器.query),写入接口(即内容解析器.insert)、删除接口(即内容解析器.delete)和更新接口(即内容解析器.update)。
其中,第一APP访问内容解析器中的不同接口,则内容解析器向内容提供器发送不同的请求。例如,访问内容解析器中的查询接口的情况下,内容解析器向内容提供器发送查询请求;访问内容解析器中的写入接口的情况下,内容解析器向内容提供器发送写入请求;访问内容解析器中的删除接口的情况下,内容解析器向内容提供器发送删除请求;访问内容解析器中的更新接口的情况下,内容解析器向内容提供器发送更新请求。
需要说明的是,查询请求、写入请求、删除请求和更新请求的详情,可以参照上述对查询请求、写入请求、删除请求和更新请求的介绍内容,本申请实施例这里不予赘述。
可选地,内容解析器还可以包括批量写入接口(即内容解析器.bulkinsert),并且,访问内容解析器中的批量写入接口的情况下向内容提供器发送批量写入请求(即bulkinsert)。进而内容提供器可以响应于内容提供器,对内容提供器对应的共享数据执行批量写入操作。其中,批量写入操作通常是指在向内容提供器对应的共享数据中一次性插入大量数据的操作。批量写入操作允许将多行数据一次性批量加载到内容提供器对应的共享数据中,而不是逐行插入。
S410、目标内容提供器响应于查询请求,获取第二APP的目标数据。
目标内容提供器响应于该查询请求,可以获取目标内容提供器对应的共享数据,并向第一APP发送目标内容提供器对应的共享数据。该目标内容提供器对应的共享数据是第二APP的目标数据。例如,目标内容提供器对应的共享数据可以包括:图库APP中的图片,或者,电话APP中的通讯录。
示例性地,目标内容提供器获取的第二APP的目标数据可以是cursor类型的。
S411、目标内容提供器向第一APP发送第二APP的目标数据。
目标内容提供器向第一APP返回第二APP的目标数据后,第一APP可以显示数据界面,该数据界面包括第二APP的目标数据。
示例性地,继续以第一APP为设置APP,第二APP为图库APP为例,电子设备中的设置APP可以响应于对该选项511的点击操作,向电子设备中的操作系统发送第一数据请求,该第一数据请求用于指示目标内容提供器,该目标内容提供器对应的共享数据包括图库APP中的图片。操作系统向设置APP返回目标内容提供器对应的内容解析器的接口信息。设置APP可以根据该内容解析器的接口信息,访问内容解析器中的查询接口。操作系统中的内容解析器可以向状态管理模块发送状态获取请求。状态管理模块向内容解析器返回目标内容提供器的状态。如果目标内容提供器的状态为激活状态,则操作系统可以拉起图库APP,并向图库APP中的目标内容提供器发送查询请求。目标内容提供器可以响应于该查询请求,向设置APP发送图库APP中的图片。设置APP接收目标内容提供器发送的图库APP中的图片,再显示第二界面520。如图7中的(b)所示,该第二界面520可以包括图库APP中的图片。
示例性地,继续以第一APP为通讯类APP,第二APP为电话APP为例,电子设备中的通讯录APP可以响应于对该选项611的点击操作,向电子设备中的操作系统发送第一数据请求,该第一数据请求用于指示目标内容提供器,该目标内容提供器对应的共享数据包括电话APP中的通讯录。操作系统向通讯录APP返回目标内容提供器对应的内容解析器的接口信息。通讯录APP可以根据该内容解析器的接口信息,访问内容解析器中的查询接口。操作系统中的内容解析器可以向状态管理模块发送状态获取请求。状态管理模块向内容解析器返回目标内容提供器的状态。如果目标内容提供器的状态为激活状态,则操作系统可以拉起电话APP,并向电话APP中的目标内容提供器发送查询请求。目标内容提供器可以响应于该查询请求,向通讯录APP发送电话APP中的通讯录。通讯录APP接收目标内容提供器发送的通讯录,再显示第二界面620。如图8中的(b)所示,该第二界面620可以包括通讯录。该通讯录可以包括手机联系人,例如,安**、阿*和A**等等。
本申请实施例中,电子设备中的状态管理模块用于保存电子设备中的每个内容提供器的状态,还可用于在对任意一个内容提供器对应的共享数据执行修改操作的情况下,更新该内容提供器的状态。其中,修改操作可以是指除查询操作以外的其他操作,例如,写入操作、批量写入操作、删除操作和更新操作。
可选地,状态管理模块可以在缓存文件中保存电子设备中每个内容提供器的状态,以实现持久化保存电子设备中每个内容提供器的状态。电子设备停止工作(例如,关机)的情况下,该缓存文件保存的每个内容提供器的状态不会丢失。进而,在重启电子设备的时候状态管理模块可以加载该缓存文件,以读取该缓存文件中的每个内容提供器的状态。
示例性地,以第二APP中的目标内容提供器为例,介绍电子设备更新内容提供器的状态的过程。如图9所示的内容提供器的状态更新示意图,电子设备更新内容提供器的状态可以包括S701-S708。
S701、第三APP接收用户输入的第二操作,该第二操作用于触发修改第二APP的目标数据。
电子设备在前台运行第三APP的情况下,第三APP可以接收用户输入的第二操作。该第二操作用于触发修改第二APP的目标数据,例如,向第二APP的目标数据中写入新数据,从第二APP的目标数据中删除数据,更新第二APP的目标数据。其中,第三APP和第二APP可以相同或不同。如果第三APP和第二APP相同,表示第二APP对自身提供的内容提供器对应的共享数据执行修改操作。如果第三APP和第二APP不同,表示与第二APP不同的其他APP对第二APP提供的内容提供器对应的共享数据执行修改操作,例如,第三APP可以是第一APP。
示例性地,第二APP可以为图库APP,第二APP的目标数据可以为图库APP中的图片,第三APP可以为相机APP。第三APP可以接收触发拍照的操作,该触发拍照的操作属于第二操作。
S702、第三APP响应于第二操作,向关键类发送第二数据请求;该第二数据请求用于指示第二APP中的目标内容提供器。
第三APP响应于该第二操作,确定与目标数据对应的目标内容提供器,并向电子设备中的操作系统(例如,AndroidTM操作系统)发送第二数据请求。该第二数据请求用于请求修改目标内容提供器对应的共享数据,例如,用于请求写入、更新或删除目标内容提供器对应的共享数据。具体地,第一APP可以向操作系统中的Context发送第二数据请求。该第二数据请求可以包括目标授权信息,该目标授权信息用于标识目标内容提供器。
S703、关键类响应于第二数据请求,向第三APP返回内容解析器的接口信息。
需要说明的是,S703的详情,可以参照上述S403的介绍内容,本申请实施例这里不予赘述。
S704、第三APP根据该内容解析器的接口信息,访问内容解析器中的修改接口。
第三APP响应于触发修改第二APP的目标数据的第二操作,获取该内容解析器的接口信息后,可以根据该内容解析器的接口信息,访问内容解析器中的修改接口。该修改接口可以包括内容解析器中除查询接口以后的其他接口。例如,其他接口包括写入接口(即内容解析器.insert)、批量写入接口(即内容解析器.bulkinsert)、删除接口(即内容解析器.delete)和更新接口(即内容解析器.update)。
示例性地,在第二数据请求用于请求写入目标内容提供器对应的共享数据的情况下,第三APP访问内容解析器中的写入接口。或者,在第二数据请求用于请求批量写入目标内容提供器对应的共享数据的情况下,第三APP访问内容解析器中的批量写入接口。或者,在第二数据请求用于请求删除目标内容提供器对应的共享数据的情况下,第三APP访问内容解析器中的删除接口。或者,在第二数据请求用于请求更新目标内容提供器对应的共享数据的情况下,第三APP访问内容解析器中的更新接口。
S705、内容解析器响应于第一APP对修改接口的访问,向状态管理模块发送状态获取请求,状态获取请求用于请求获取目标内容提供器的状态。
内容解析器在第三APP访问修改接口的情况下,向状态管理模块发送状态获取请求。
S706、状态管理模块响应于状态获取请求,向内容解析器发送目标内容提供器的状态。
状态管理模块响应于状态获取请求,可以获取存储的目标内容提供器的状态,并向内容解析器发送目标内容提供器的状态。内容解析器在第三APP访问修改接口的情况下接收目标内容提供器的状态,再根据目标内容提供器的状态判断是否更新目标内容提供器的状态。如果目标内容提供器的状态为未激活状态,则内容解析器可以更新目标内容提供器的状态,即执行S707;如果目标内容提供器的状态为激活状态,则操作系统可以不更新目标内容提供器的状态。
S707、若目标内容提供器的状态为未激活状态,则内容解析器向状态管理模块发送更新请求,该更新请求用于触发更新目标内容提供器的状态为激活状态。
S708、状态管理模块响应于该更新请求,将目标内容提供器的状态更新为激活状态,并将目标内容提供器的状态保存至缓存文件。
状态管理模块将更新后的目标内容提供器的状态保存至缓存文件,以实现持久化保存更新后的目标内容提供器的状态。
本申请实施例中,电子设备在S704(即第三APP访问内容解析器中的修改接口)之后,操作系统可以响应于第一APP对修改接口的访问,拉起目标内容提供器的进程(例如,拉起目标内容提供器所属的第二APP)。然后,操作系统在目标内容提供器的进程被拉起的情况下,向第二APP中的目标内容提供器发送修改请求;然后,目标内容提供器响应于该修改请求,可以对目标内容提供器对应的共享数据执行修改操作。该目标内容提供器对应的共享数据可以是第二APP的目标数据。
其中,修改接口、修改请求和修改操作可以是一一对应的。例如,第三APP访问的修改接口是写入接口,则操作系统向目标内容提供器发送的修改请求是写入请求,目标内容提供器对共享数据执行的修改操作是写入操作。第三APP访问的修改接口是批量写入接口,则操作系统向目标内容提供器发送的修改请求是批量写入请求,目标内容提供器对共享数据执行的修改操作是批量写入操作。第三APP访问的修改接口是删除接口,则操作系统向目标内容提供器发送的修改请求是删除请求,目标内容提供器对共享数据执行的修改操作是删除操作。第三APP访问的修改接口是更新接口,则操作系统向目标内容提供器发送的修改请求是更新请求,目标内容提供器对共享数据执行的修改操作是更新操作。
在一些实施例中,状态管理模块在更新任意一个内容提供器的状态之前,可以在检测到电子设备增加该内容提供器的时候,确定该内容提供器的状态为默认的未激活状态,并保存在缓存文件中。
其次,状态管理模块除了在对该内容提供器对应的共享数据执行修改操作的情况下更新该内容提供器的状态,还可以在该内容提供器所属的APP被卸载时,将该APP提供的所有内容提供器(包括该内容提供器)更新为未激活状态,并保存在缓存文件中。
示例性地,以第二APP提供的内容提供器为例,介绍电子设备获取内容提供器的状态的过程。如图10所示的内容提供器的状态获取示意图,电子设备获取内容提供器的状态可以包括S801-S805。
S801、状态管理模块在电子设备下载第二APP后,从系统服务中获取第二APP提供的内容提供器的授权信息;第二APP提供的内容提供器包括目标内容提供器。
电子设备接收用户输入的触发下载第二APP的下载操作;再响应于该下载操作,下载安装第二APP。在电子设备下载第二APP后,电子设备可以在电子设备中的系统服务(即SystemServer)保存第二APP提供的内容提供器的授权信息。
S802、状态管理模块将第二APP提供的内容提供器的状态设置为未激活状态,并将第二APP提供的内容提供器的状态保存在状态管理模块和缓存文件中。
状态管理模块从系统服务中获取第二APP提供的内容提供器的授权信息后,将该内容提供器的授权信息的状态设置为默认的未激活状态,并对该内容提供器的授权信息和该内容提供器的授权信息的状态进行映射保存。例如,如图10所示,第二APP提供的内容提供器可以包括两个内容提供器,这两个内容提供器包括内容提供器-1和内容提供器-2等等。第二APP提供的目标内容提供器可以是内容提供器-1。
S803、广播接收器在电子设备卸载第二APP的情况下,接收目标广播消息,该目标广播消息用于指示第二APP被卸载。
电子设备接收用户输入的触发卸载第二APP的卸载操作;再响应于该卸载操作,卸载第二APP,并生成目标广播消息。然后,电子设备可以向电子设备中的广播接收器发送目标广播消息。
S804、广播接收器响应于目标广播消息,向状态管理模块发送应用卸载消息,该应用卸载消息用于指示第二APP。
S805、状态管理模块响应于应用卸载消息,将第二APP提供的内容提供器的状态设置为未激活状态,并将第二APP提供的内容提供器的状态保存在状态管理模块和缓存文件中。
状态管理模块响应于应用卸载消息,重置第二APP的所有内容提供器的状态,即将第二APP提供的所有内容提供器的状态设置为默认的未激活状态。
进一步地,以上述第三APP是第二APP为例,第二APP对自身提供的内容提供器对应的共享数据执行修改操作。如图10所示,在S802之后,电子设备还可以执行S806-S809。
S806、第二APP根据该内容解析器的接口信息,访问内容解析器中的修改接口。
需要说明的是,S806的详情,可以参照上述对S704的介绍内容,本申请实施例这里不予赘述。
S807、第二APP从状态管理模块中获取目标内容提供器的状态。
第二APP可以通过内容解析器,从状态管理模块中获取目标内容提供器的状态。可选地,S807可以包括:内容解析器在第三APP访问修改接口的情况下,向状态管理模块发送状态获取请求,状态获取请求用于请求获取目标内容提供器的状态;状态管理模块响应于状态获取请求,向内容解析器发送目标内容提供器的状态;内容解析器向第二APP发送目标内容提供器的状态。
进一步地,第二APP可以根据目标内容提供器的状态判断是否更新目标内容提供器的状态。如果目标内容提供器的状态为未激活状态,则第二APP可以更新目标内容提供器的状态,即执行S808;如果目标内容提供器的状态为激活状态,则第二APP可以不更新目标内容提供器的状态,即第二APP无操作(noop)。
S808、若目标内容提供器的状态为未激活状态,则第二APP向状态管理模块发送更新请求,该更新请求用于触发更新目标内容提供器的状态为激活状态。
S809、状态管理模块响应于该更新请求,将目标内容提供器的状态更新为激活状态,并将目标内容提供器的状态保存至缓存文件。
需要说明的是,S808-S809的详情,可以参照上述对S707-S708的介绍内容,本申请实施例这里不予赘述。
本申请实施例提供的一种数据访问方法还可以包括如下步骤A1-A5。步骤A1:第一APP响应于用户输入的第一操作,向电子设备发送第一数据请求;步骤A2:电子设备响应于第一数据请求,获取目标内容提供器的状态;步骤A3:电子设备在目标内容提供器的状态为激活状态的情况下,拉起目标内容提供器所在的进程;步骤A4:电子设备在目标内容提供器所在的进程被拉起的情况下,向目标内容提供器发送查询请求;步骤A5:目标内容提供器响应于查询请求,向第一APP发送目标数据。
其中,步骤A1可以包括上述S402。步骤A2可以包括上述S403-S406。步骤A3可以包括上述S408。步骤A4可以包括上述S409。步骤A5可以包括上述S410-S411。
可以理解的是,上述电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
本申请实施例可以根据上述方法示例对上述电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
本申请实施例还提供一种电子设备,该电子设备包括:存储器和一个或多个处理器;存储器与处理器耦合;其中,存储器中存储有计算机程序代码,计算机程序代码包括计算机指令,当计算机指令被处理器执行时,使得电子设备执行如前述实施例提供的数据访问方法。
示例性地,以电子设备为手机为例,介绍该电子设备的具体结构。如图11所示,手机可以包括处理器910,外部存储器接口920,内部存储器921,传感器模块930,显示屏940等。其中,传感器模块930可以包括触摸传感器930A等。
处理器910可以用于执行上述方法实施例中手机执行的各个功能或者步骤。
处理器910中还可以设置存储器,用于存储指令和数据,例如,存储电子设备中的内容提供器的状态。在一些实施例中,处理器910中的存储器为高速缓冲存储器。该存储器可以保存处理器910刚用过或循环使用的指令或数据。如果处理器910需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器910的等待时间,因而提高了系统的效率。
外部存储器接口920可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机的存储能力。外部存储卡通过外部存储器接口920与处理器920通信,实现数据存储功能。内部存储器920可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器920通过运行存储在内部存储器920的指令,从而执行上述方法实施例中手机执行的各个功能或者步骤。内部存储器921可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的APP等。存储数据区可存储手机使用过程中所创建的数据(比如目标内容提供器的状态等)等。此外,内部存储器921可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
显示屏940用于显示界面等。该显示屏940包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),发光二极管(light-emitting diode,LED),有机发光二极管(organic light-emitting diode,OLED)等。
其中,本申请实施例中的显示屏940如果集成了触摸传感器930A,则显示屏940可以称为触摸屏。该触摸传感器930A也可以称为“触控面板”。也就是说,显示屏940可以包括显示面板和触摸面板。触摸传感器930A用于检测作用于其上或附近的触摸操作。触摸传感器930B检测到触摸操作(如,上述对选项511的点击操作,上述对选项611的点击操作)后,可触发手机的内核层的驱动周期性地扫描该触摸操作产生的触摸参数。然后,内核层的驱动将触摸参数传递给上层的相关模块,以便于相关模块确定触摸参数对应的触摸事件。本申请实施例中以显示屏940是集成有触摸传感器的显示屏(即触摸屏)为例,对上述界面调整方法的具体过程进行说明。
可以理解的是,本实施例示意的结构并不构成对手机的具体限定。在另一些实施例中,手机可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如前述实施例提供的数据访问方法。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包含可执行指令,当该计算机程序产品在电子设备上运行时,使得电子设备执行如前述实施例提供的数据访问方法。
本申请实施例还提供一种芯片系统,如图12所示,该芯片系统1200包括至少一个处理器1201和至少一个接口电路1202。处理器1201和接口电路1202可通过线路互联。例如,接口电路1202可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路1202可用于向其它装置(例如处理器1201)发送信号。
示例性的,接口电路1202可读取存储器中存储的指令,并将该指令发送给处理器1201。当指令被处理器1201执行时,可使得芯片系统执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置/设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种数据访问方法,其特征在于,应用于电子设备,所述电子设备包括第一APP和第二APP,所述方法包括:
所述第一APP响应于用户输入的第一操作,向所述电子设备发送第一数据请求;其中,所述第一操作用于触发获取所述第二APP的目标数据;所述第一数据请求用于请求查询所述第二APP中的目标内容提供器对应的共享数据,所述目标内容提供器对应的共享数据包括所述目标数据;
所述电子设备响应于所述第一数据请求,获取所述目标内容提供器的状态;
所述电子设备在所述目标内容提供器的状态为激活状态的情况下,拉起所述目标内容提供器所在的进程;其中,所述目标内容提供器的状态为激活状态用于表示所述目标内容提供器对应的共享数据被修改过;
所述电子设备在所述目标内容提供器所在的进程被拉起的情况下,向所述目标内容提供器发送查询请求;
所述目标内容提供器响应于所述查询请求,向所述第一APP发送所述目标数据。
2.根据权利要求1所述的方法,其特征在于,在所述获取所述目标内容提供器的状态之后,所述方法还包括:
所述电子设备在所述目标内容提供器的状态为未激活状态的情况下,向所述第一APP发送空值。
3.根据权利要求1所述的方法,其特征在于,所述拉起所述目标内容提供器所在的进程,包括:拉起所述第二APP。
4.根据权利要求1所述的方法,其特征在于,所述电子设备响应于所述第一数据请求,获取所述目标内容提供器的状态,包括:
所述电子设备响应于所述第一数据请求,向所述第一APP发送与所述目标内容提供器关联的内容解析器的接口信息;
所述第一APP根据所述内容解析器的接口信息,访问所述内容解析器中的查询接口;
所述内容解析器响应于所述第一APP对所述查询接口的访问,获取所述目标内容提供器的状态;
其中,所述电子设备在所述目标内容提供器所在的进程被拉起的情况下,向所述目标内容提供器发送查询请求,包括:
所述内容解析器在所述目标内容提供器所在的进程被拉起的情况下,响应于所述第一APP对所述查询接口的访问,向所述目标内容提供器发送查询请求。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述电子设备还包括第三APP,所述方法还包括:
所述第三APP响应于用户输入的第二操作,向所述电子设备发送第二数据请求;其中,所述第二操作用于触发修改所述第二APP的目标数据;所述第二数据请求用于请求修改所述目标内容提供器对应的共享数据;
所述电子设备响应于所述第二数据请求,获取所述目标内容提供器的状态;
所述电子设备在所述目标内容提供器的状态为未激活状态的情况下,将所述目标内容提供器的状态更新为激活状态,并将所述目标内容提供器的状态保存至缓存文件中。
6.根据权利要求5所述的方法,其特征在于,所述电子设备响应于所述第二数据请求,获取所述目标内容提供器的状态,包括:
所述电子设备响应于所述第二数据请求,向所述第三APP发送与所述目标内容提供器关联的内容解析器的接口信息;
所述第三APP根据所述内容解析器的接口信息,访问所述内容解析器中的修改接口;
所述内容解析器响应于所述第三APP对所述修改接口的访问,获取所述目标内容提供器的状态。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述内容解析器响应于所述第三APP对所述修改接口的访问,拉起所述目标内容提供器所在的进程;
所述内容解析器在所述目标内容提供器所在的进程被拉起的情况下,向所述目标内容提供器发送修改请求;
所述目标内容提供器响应于所述修改请求,修改所述目标数据。
8.根据权利要求5所述的方法,其特征在于,所述第二数据请求包括:用于请求向所述目标内容提供器对应的共享数据写入数据的请求,用于请求更新所述目标内容提供器对应的共享数据的请求,或用于请求删除所述目标内容提供器对应的共享数据的请求。
9.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
所述电子设备在所述电子设备下载所述第二APP后,获取所述第二APP提供的内容提供器的授权信息;所述第二APP提供的内容提供器包括所述目标内容提供器;
所述电子设备将所述第二APP提供的内容提供器的状态设置为未激活状态,并将所述第二APP提供的内容提供器的状态保存在缓存文件中。
10.一种电子设备,其特征在于,所述电子设备包括:处理器、存储器和通信接口;所述存储器和所述通信接口与所述处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令;其中,当所述处理器执行所述计算机指令时,使得所述电子设备执行如权利要求1-9中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令;当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-9中任一项所述的方法。
12.一种芯片系统,其特征在于,所述芯片系统包括处理器和接口电路,所述处理器和所述接口电路可通过线路互联;其中,所述接口电路用于接收来自电子设备的信号,并向所述处理器发送所述信号,所述信号包括计算机指令;当所述处理器执行所述计算机指令时,使得所述芯片系统执行如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410179393.0A CN117743445B (zh) | 2024-02-18 | 2024-02-18 | 一种数据访问方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410179393.0A CN117743445B (zh) | 2024-02-18 | 2024-02-18 | 一种数据访问方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117743445A CN117743445A (zh) | 2024-03-22 |
CN117743445B true CN117743445B (zh) | 2024-06-21 |
Family
ID=90279558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410179393.0A Active CN117743445B (zh) | 2024-02-18 | 2024-02-18 | 一种数据访问方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117743445B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113724521A (zh) * | 2021-07-19 | 2021-11-30 | 阿里巴巴新加坡控股有限公司 | 图像数据处理方法、装置、设备及计算机程序产品 |
CN117056383A (zh) * | 2023-07-12 | 2023-11-14 | 荣耀终端有限公司 | 搜索方法和电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815033A (zh) * | 2019-01-24 | 2019-05-28 | 努比亚技术有限公司 | 一种跨进程数据共享方法 |
CN110442467B (zh) * | 2019-06-20 | 2023-02-03 | Oppo广东移动通信有限公司 | 一种数据共享方法及终端、计算机可读存储介质 |
CN114546969A (zh) * | 2020-11-24 | 2022-05-27 | 华为技术有限公司 | 一种文件共享方法、装置及电子设备 |
-
2024
- 2024-02-18 CN CN202410179393.0A patent/CN117743445B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113724521A (zh) * | 2021-07-19 | 2021-11-30 | 阿里巴巴新加坡控股有限公司 | 图像数据处理方法、装置、设备及计算机程序产品 |
CN117056383A (zh) * | 2023-07-12 | 2023-11-14 | 荣耀终端有限公司 | 搜索方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117743445A (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11868785B2 (en) | Application program page processing method and device | |
CA2761563C (en) | Annotating virtual application processes | |
US11579899B2 (en) | Method and device for dynamically managing kernel node | |
US11853820B2 (en) | Cross-process communication method, apparatus, and device | |
US11222118B2 (en) | Method for updating selinux security policy and terminal | |
KR20110128846A (ko) | 장치와 웹 서비스 간에 브라우저 캐시를 동기화하는 프로그래밍 모델 | |
KR101369428B1 (ko) | 이종의 게스트 오퍼레이팅 시스템을 지원하는 휴대용 단말을 위한 어플리케이션 관리 장치 및 방법 | |
CN101095111A (zh) | 一种维护计算装置中的应用程序的方法 | |
CN112162795B (zh) | 一种插件启动方法、装置、计算机设备和存储介质 | |
CN114020652A (zh) | 一种应用程序的管理方法及电子设备 | |
CN116643778B (zh) | 一种应用程序优化方法及电子设备 | |
KR101203741B1 (ko) | 스마트카드 기반 위젯 서비스 시스템 및 그 방법, 그리고 이에 적용되는 스마트카드 | |
WO2021057411A1 (zh) | 一种组件加载方法、装置及系统 | |
CN117743445B (zh) | 一种数据访问方法及电子设备 | |
CN116400938B (zh) | 操作系统的升级方法、设备及存储介质 | |
EP4318213A1 (en) | Method and apparatus for controlling android app, and terminal device | |
CN116719670B (zh) | 数据处理的方法、电子设备及可读存储介质 | |
WO2022143126A1 (zh) | 应用的安全性分析方法、装置、设备及存储介质 | |
CN112181406A (zh) | 一种渲染引擎的共享方法和装置 | |
CN117130627B (zh) | 配件升级方法及电子设备 | |
CN116382809B (zh) | 应用程序启动方法和电子设备 | |
CN116700740B (zh) | 软件修复方法和相关装置 | |
CN115981576B (zh) | 共享数据的方法、电子设备及存储介质 | |
WO2024119895A1 (zh) | 操作系统升级方法、设备和存储介质 | |
CN117707657A (zh) | 应用界面的显示方法、电子设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |