数据存储方法、装置、电子设备及存储介质与流程

文档序号:29265598发布日期:2022-03-16 13:53阅读:89来源:国知局
数据存储方法、装置、电子设备及存储介质与流程

1.本公开涉及数据处理技术领域,具体涉及一种数据存储方法、装置、电子设备及存储介质。


背景技术:

2.android原生系统的sharedpreferences(sp)组件用于本地存储key-value(键值对),键值对通常以xml(extensible markup language,可扩展标记语言)文件的形式进行存储,存储方便且存取速率快,但是,sharedpreferences组件通常适用于轻量型数据的存储,对于大数据其存储性能较差,特别是当单次存入的数据量过大时可能会存在数据丢失或导致系统崩溃。


技术实现要素:

3.本公开实施例提供了一种数据存储方法、装置、电子设备及存储介质,能够解决现有技术中利用sharedpreferences组件进行大数据存储时性能较差的技术问题。
4.根据本公开的方案之一,提供一种数据存储方法,包括:
5.获取应用程序运行时的待存储数据;
6.判断所述待存储数据的数据量是否大于预设数据量阈值;
7.若是,使用第一存储组件中的第一存储单元存储所述待存储数据;若否,使用第一存储组件中的第二存储单元存储所述待存储数据,其中,所述第一存储组件在所述应用程序启动时替换第二存储组件得到,所述第二存储组件的存储方式与所述第二存储单元的存储方式相同。
8.在一些实施例中,在所述应用程序启动时,使用所述第一存储组件替换所述第二存储组件,包括:
9.在所述应用程序启动时,获取所述应用程序的application对象实例;
10.基于所述application对象实例通过反射机制获取所述应用程序的第二存储组件;
11.使用所述第一存储组件替换所述第二存储组件。
12.在一些实施例中,基于所述application对象实例通过反射机制获取所述应用程序的第二存储组件,包括:
13.基于所述application对象实例获取所述应用程序的包名;
14.基于所述应用程序的包名从预设的存储变量中获取所述应用程序对应的第二存储组件,其中,所述预设的存储变量中以map结构存储有多个应用程序的包名和对应的第二存储组件。
15.在一些实施例中,使用所述第一存储组件替换所述第二存储组件,包括:
16.将所述第二存储组件的第二存储实例确定为所述第二存储单元;
17.将包含第一存储实例的所述第一存储单元添加至所述第二存储组件中,形成所述
第一存储组件。
18.在一些实施例中,所述方法还包括:
19.基于所述应用程序创建自定义的第一存储实例;
20.在所述应用程序的编译阶段,对所述第一存储实例进行封装,得到所述第一存储单元。
21.在一些实施例中,所述方法还包括:
22.在所述应用程序的编译阶段,对所述第一存储实例和所述第二存储组件对应的第二存储实例进行封装,得到所述第一存储组件;
23.在所述应用程序启动时,使用所述第一存储组件替换所述第二存储组件。
24.在一些实施例中,所述第一存储组件为sharedpreferences组件,所述第一存储单元以文件和/或数据库的形式存储所述待存储数据,所述第二存储单元以xml的形式存储所述待存储数据。
25.根据本公开的方案之一,还提供一种数据存储装置,包括:
26.获取模块,配置为获取应用程序运行时的待存储数据;
27.判断模块,配置为判断所述待存储数据的数据量是否大于预设数据量阈值;
28.存储模块,配置为若所述待存储数据的数据量大于预设数据量阈值,使用第一存储组件中的第一存储单元存储所述待存储数据;若所述待存储数据的数据量不大于所述预设数据量阈值,使用第一存储组件中的第二存储单元存储所述待存储数据,其中,所述第一存储组件在所述应用程序启动时替换第二存储组件得到,所述第二存储组件的存储方式与所述第二存储单元的存储方式相同。
29.根据本公开的方案之一,还提供一种电子设备,包括处理器和存储器;所述存储器存储计算机执行指令;所述处理器执行所述存储器存储的计算机执行指令时实现如上所述的数据存储方法。
30.根据本公开的方案之一,还提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时,实现如上所述的数据存储方法。
31.本公开的各种实施例提供的数据存储方法、装置、电子设备及存储介质,通过在应用程序启动时将原生的第二存储组件替换为既包含原生存储方式又包含新的大数据存储方式的第一存储组件,可以在应用程序运行的过程中,实时根据待存储数据的数据量大小选择第一存储组件中对应的存储单元对待存储数据进行存储,能够实现不同数据的可靠存储,且能够避免数据量过大造成的系统崩溃,保证应用程序的顺利运行,提高电子设备的整体存储性能,并提高用户体验。
附图说明
32.图1示出本公开实施例的数据存储方法的流程图;
33.图2示出本公开实施例的数据存储方法的另一流程图;
34.图3示出本公开实施例的数据存储方法的又一流程图;
35.图4示出本公开实施例的数据存储方法的再一流程图;
36.图5示出本公开实施例的数据存储装置的结构示意图;
37.图6示出本公开实施例的电子设备的结构示意图。
具体实施方式
38.此处参考附图描述本公开的各种方案以及特征。
39.应理解的是,可以对此处申请的实施例做出各种修改。因此,上述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本公开的范围和精神内的其他修改。
40.包含在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且与上面给出的对本公开的大致描述以及下面给出的对实施例的详细描述一起用于解释本公开的原理。
41.通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本公开的这些和其它特性将会变得显而易见。
42.还应当理解,尽管已经参照一些具体实例对本公开进行了描述,但本领域技术人员能够确定地实现本公开的很多其它等效形式。
43.当结合附图时,鉴于以下详细说明,本公开的上述和其他方面、特征和优势将变得更为显而易见。
44.此后参照附图描述本公开的具体实施例;然而,应当理解,所申请的实施例仅仅是本公开的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免不必要或多余的细节使得本公开模糊不清。因此,本文所申请的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本公开。
45.本公开实施例提供的数据存储方法应用于具有操作系统的电子设备。电子设备可以包括各种具有无线通信功能的手持设备(例如手机、平板电脑、pda等)、车载设备、可穿戴设备(例如智能手表、智能手环、计步器等)、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,ue),移动台(mobile station,ms),终端设备(terminal device)等。电子设备具有不同的操作系统,以为不同的应用程序提供相应的运行环境。例如,手机操作系统可以为android系统或ios系统。
46.本公开实施例中,以安装有android系统的android设备为例对数据存储方法进行详细说明。
47.图1示出了本公开实施例的数据存储方法的流程图。如图1所示,本公开实施例提供了一种数据存储方法,包括如下步骤:
48.s101:获取应用程序运行时的待存储数据。
49.其中,待存储数据是指应用程序(app)从启动到关闭退出整个运行过程中产生或使用的相关数据,应用程序启动运行的过程中需要经历很多进程,比如程序读入、页面加载、计算、输入输出等,这些进程中会产生很多的数据,可以将它们预先存储在内存中,以供应用程序运行时读取调用;同时,应用程序启动后,用户会进行各种操作,当用户下一次启动应用程序,可能会希望保持上一次的操作状态,因此,需要在应用程序运行或关闭时将一些数据保存以供调用。
50.待存储数据包括但不限于:应用程序的配置信息、日志信息、缓存数据等。示例性地,配置信息可以为应用程序运行时不同页面产生的配置信息,android系统可以对应用程序的运行进行实时监测,在当前页面加载完成后可以将该页面的配置信息确定为一待存储
数据,当另一页面加载完成后可以将另一页面的配置信息确定为另一待存储数据,即根据不同页面的加载确定单次需要存储的不同待存储数据。
51.具体实施中,也可以采用其他方式确定待存储数据,例如,可以通过设置定时器,将应用程序运行一定时间间隔产生的配置信息确定为待存储数据;再例如,可以根据用户选择确定待存储数据,当用户需要对当前页面进行保存时,可以在用户选中当前页面后,将当前页面对应的页面数据确定为待存储数据。
52.待存储数据的数据类型可以为int、long、boolean、string、float、set和map等常用的数据类型,也可以为其他任意数据类型,本公开不具体限定。
53.s102:判断所述待存储数据的数据量是否大于预设数据量阈值。
54.在获取单次需要存储的待存储数据后,可以对待存储数据的数据量进行检测,判断待存储数据的数据量是否大于预设数据量阈值,从而根据待存储数据的数据量大小进行相应的存储。
55.s103:若是,使用第一存储组件中的第一存储单元存储所述待存储数据;若否,使用第一存储组件中的第二存储单元存储所述待存储数据,其中,所述第一存储组件在所述应用程序启动时替换第二存储组件得到,所述第二存储组件的存储方式与所述第二存储单元的存储方式相同。
56.其中,第二存储组件为android系统原有的用于存储轻量级数据(轻型数据)的存储组件;第一存储组件为替换第二存储组件后的存储组件。替换后的第一存储组件包括第一存储单元和第二存储单元,第一存储单元具有良好的大数据存储性能,可以实现大数据的快速存储;第二存储单元保留了系统原有的第二存储组件的存储方式,可以实现轻量级数据的快速存储。
57.由于android系统原生的第二存储组件通常用于存储轻量级数据,当待存储数据的数据量较大时,使用第二存储组件进行存储可能导致部分数据未能有效存储,存在数据丢失;或者由于单次存储的数据量过大导致系统崩溃。为保证数据的有效存储以及防止系统崩溃,本步骤中,当所述待存储数据的数据量大于预设数据量阈值时,利用第一存储单元对待存储数据进行存储;当所述待存储数据的数据量小于或等于预设数据量阈值时,利用与第二存储组件的存储方式相同的第二存储单元对待存储数据进行存储,既能够对数据量较大的数据进行有效存储,防止数据丢失,并防止系统崩溃,保证应用程序的顺利运行,又能够利用系统原生的第二存储组件,对轻量级数据进行快速、方便存储,提高电子设备的整体存储性能。
58.本实施例中,在应用程序启动时,使用第一存储组件替换第二存储组件,后续应用程序运行过程中,只要确定待存储数据及其数据量大小便可以使用对应的存储单元进行数据存储;同时,由于直接使用第一存储组件替换第二存储组件,因此,通过调用android系统原有的第二存储组件对应的应用程序编程接口(application programming interface,api)即可调用第一存储组件对应的存储单元对待存储数据进行存储,即本实施例中,利用android系统原有的第二存储组件对应的api即进行数据存储,无需额外设置对应的api,可以大大提高数据存储效率,且整个存储过程仍使用原有的系统api进行调用,用户难以感知,也不会影响其他逻辑的实现,操作方便,同时可以提高用户体验。此外,通过调用同一api调用第一存储组件后,系统便可根据待存储数据的数据量大小选择相应的存储单元对
不同的待存储数据进行存储,能够有效避免api的误调用,保证数据的顺利、可靠存储。
59.本公开实施例提供的数据存储方法通过在应用程序启动时将原生的第二存储组件替换为既包含原生存储方式又包含新的大数据存储方式的第一存储组件,可以在应用程序运行的过程中,实时根据待存储数据的数据量大小选择第一存储组件中对应的存储单元对待存储数据进行存储,能够实现不同数据的可靠存储,且能够避免数据量过大造成的系统崩溃,保证应用程序的顺利运行,提高电子设备的整体存储性能,并提高用户体验。
60.可选地,所述第一存储组件为sharedpreferences组件,所述第一存储单元以文件和/或数据库的形式存储所述待存储数据,所述第二存储单元以xml的形式存储所述待存储数据。即第二存储组件为android系统原生的sharedpreferences组件,本实施例中,使用新的第一sharedpreferences组件对android系统原生的第二sharedpreferences组件进行替换。
61.android系统通过原生的第二sharedpreferences组件提供一个sharedpreferences类来存储应用程序的一些轻量级数据,例如,原生的第二sharedpreferences组件可以存储应用程序的activity状态,activity暂停时,将该activity的状态保存到sharedpereferences中;当activity重载时,系统回调方法onsaveinstancestate时,再从sharedpreferences中将对应的值取出。
62.第二sharedpreferences组件通过android系统生成一个xml文件,并将数据以key-value(键值对)形式写在该xml文件中存储,key表示存储数据在sp.xml文件中的关键字,value表示该存储数据在sp.xml中的存储值。
63.android系统中,数据基本都是私有的,通常存放于“data/data/程序包名”目录下,因此,使用第二sharedpreferences组件进行存储的xml文件通常保存到“/data/data/包名/shared_prefs”目录下。应用程序每次存储时创建一个sp.xml文件,且一个应用可以创建多个xml文件。
64.第二存储单元中存储有与android系统原生的第二sharedpreferences组件相同的存储逻辑,当确定待存储数据的数据量小于或等于预设数据量阈值时,使用第二存储单元进行存储,由于原有的第二sharedpreferences组件与数据库相比,免去了创建数据库、创建表、写sql语句等诸多操作,因此,存储操作更加方便、简洁。另外,采用sharedpreferences组件第一次获取数据后,数据通常会被加载到一个缓存的map中,之后的读取都会非常快,因此,使用sharedpreferences组件存储数据后,可以提高后续数据的读取效率。
65.第一存储单元中存储有相应的文件和/或数据库存储逻辑,例如,第一存储单元以数据库的形式存储数据时,其存储逻辑包括:(1)创建数据库;(2)创建数据表,插入数据;(3)修改数据;(4)查询数据;(5)删除数据等。当第一存储单元以数据库的形式存储数据时,待存储数据可以以数据表的格式存储在该数据库文件夹下,其后缀名可以为.db。例如,数据库的存储路径可以为:/data/data/《packagename》/share_prefs_cashe/databases。另一些实施例中,待存储数据也可以以其他数据文件格式存储在数据库文件夹下,例如,后缀名还可以包括abc.xml、abc.json、abc.png、abc.cache等任意格式。
66.当第一存储单元以文件的形式存储数据时,待存储数据可以直接以文件的形式存储在目录中。例如,文件的存储路径可以为:/data/data/《packagename》/share_prefs_
cashe/files。
67.可以理解的是,当所述待存储数据的数据量大于预设数据量阈值时,可以单独使用文件或数据库的形式对待存储数据进行存储,也可以在第一存储单元中既设置文件存储逻辑,又设置数据库存储逻辑,以便用户根据实际需要选择对应的存储方式,进一步提高大数据存储的方便性。
68.本实施例中,预设数据量阈值可以根据第二存储组件的存储限制来确定,例如,本实施例中,第二sharedpreferences组件通常用于存储应用程序的配置参数等轻量级数据,因此,可以将预设数据量阈值设置的较小,例如,预设数据量阈值为1m。
69.本实施例中,保留了系统原生sharedpreferences的xml方式存储数据的能力,并新增了文件和/或数据库方式存储数据的能力,在应用程序的运行过程中根据待存储数据的数据量大小动态切换存储方式,在保证sharedpreferences组件原有存储方便、存取速率快等优点的基础上,可以实现大数据的有效、可靠存储,提高电子设备的整体存储和运行性能。
70.在另一些实施例中,第二存储组件也可以以数据库的形式存储所述待存储数据,例如轻型(或小型)数据库,轻型数据库示例性的可以为access、msde、embedded firebird、sqlite、mysql等,对于轻量级数据具有较佳的存储性能(包括存储速率、吞吐量、时延敏感等)。第一存储单元以中型或大型数据库的形式存储数据,例如sql server。
71.可以理解的是,第一存储单元具有良好的大数据存储性能,不仅指第一存储单元具有较大的存储空间,还指第一存储单元具有较佳的存储速率等。例如,采用xml方式也可以存储部分大数据,但是存在数据存储速率慢的问题。
72.本实施例中,使用第一存储单元和第二存储单元存储的数据都是存储在内部存储空间上的,内部存储一般用context来获取和操作,因此,本实施例中,通过context提供的getsharedpreferences方法可以获取第一存储组件的不同存储单元对应的sharedpreferences实例。其中,sharedpreferences实例为实例化的sharedpreferences组件,包含有对应的sharedpreferences存储逻辑。示例性地,可以通过调用context.getsharedpreferences(包名,sharedpreferences实例)方法,获得对应的sharepreferences实例。
73.在一些实施例中,如图2所示,在所述应用程序启动时,使用所述第一存储组件替换所述第二存储组件,具体包括如下步骤:
74.s201:在所述应用程序启动时,获取所述应用程序的application对象实例;
75.s202:基于所述application对象实例通过反射机制获取所述应用程序的第二存储组件;
76.s203:使用所述第一存储组件替换所述第二存储组件。
77.具体地,在应用程序启动时,通过调用android系统的系统api获取应用程序的application对象实例。每一应用程序都会拥有一application类,当应用程序启动时,android系统就会触发该应用程序中的application类的方法。系统会自动创建一个application对象,并实例化该application对象,用来存储系统的一些信息。整个应用程序的运行过程中只有一个application对象,也即所有访问该应用程序的用户共享一个application对象。实际开发中,开发人员可以在该application类中加入需要的逻辑,例
如,加入一些服务的初始化逻辑,以对该application类实例进行初始化。
78.电子设备通过调用的系统api可以获取应用程序的application对象实例(application变量),然后根据获取的application对象实例通过反射机制查找应用程序对应的第二存储组件(即查找android系统原生的存储组件),进而使用第一存储组件替换第二存储组件。
79.在一些实施例中,步骤s202中,基于所述application对象实例通过反射机制获取所述应用程序的第二存储组件,包括:
80.s2021:基于所述application对象实例获取所述应用程序的包名;
81.s2022:基于所述应用程序的包名从预设的存储变量中获取所述应用程序对应的第二存储组件,其中,所述预设的存储变量中以map结构存储有多个应用程序的包名和对应的第二存储组件。
82.本实施例中,第二存储组件为第二sharedpreferences组件,因此,预设的存储变量可以为sshareprefscashe变量,sshareprefscashe变量中以map存储结构(key-value,键值对)存储有多个不同应用程序的包名及对应的sharedpreferences实例,其中,key表示应用程序的包名,value表示应用程序的sharedpreferences实例。预设的存储变量可以存储在电子设备中,也可以存储在外部服务器(例如云端服务器)中。
83.可选地,反射机制为java反射机制,java反射机制是动态获取信息以及动态调用对象的方法的功能,即在应用程序运行时,动态加载类或对象并获取类或对象的详细信息,从而操作(例如调用)类或对象的属性和方法。其中,类是java程序的组织单位,任何的java语句,都要写在类文件中。具体实施中,也可以采用其他反射机制获取变量,本公开不具体限定。
84.当在应用程序启动后,获取应用程序对应的application对象实例后,可以对application对象实例的源码进行分析,采用java反射机制获取上述sshareprefscashe变量,然后根据当前运行的应用程序的包名,从sshareprefscashe变量中查找对应的第二sharedpreferences组件(sharedpreferences实例)。具体实施中,可以通过getxxx()方法,获得应用程序的包名(key)对应的sharedpreferences实例(value值)。
85.在一些实施例中,步骤s203中,使用所述第一存储组件替换所述第二存储组件,包括:
86.s2031:将所述第二存储组件的第二存储实例确定为所述第二存储单元;
87.s2032:将包含第一存储实例的所述第一存储单元添加至所述第二存储组件中,形成所述第一存储组件。
88.具体地,保留android系统原有的第二sharedpreferences组件对应的sharedpreferences实例作为第二存储单元,并将包含文件和/或数据库存储逻辑的第一存储实例添加至原有的第二sharedpreferences组件中,进而形成第一sharedpreferences组件,如此,在使用第一sharedpreferences组件替换第二sharedpreferences组件时,仅需要根据应用程序新增额外的文件和/或数据库存储逻辑,并将存储逻辑对应的第一存储实例添加至原有的sharedpreferences实例所在的位置即可,原有的第一sharedpreferences组件中的其他配置并不改变,可以实现快速替换,且不易被用户察觉。
89.在一些实施例中,如图3所示,所述方法还包括:
90.s301:基于所述应用程序创建自定义的第一存储实例;
91.s302:在所述应用程序的编译阶段,对所述第一存储实例进行封装,得到所述第一存储单元。
92.具体地,在应用程序的编码阶段基于编写的应用程序代码创建自定义的第一存储实例,然后在应用程序的编译阶段,对所述第一存储实例进行封装得到第一存储单元,该第一存储单元为可执行文件,并在应用程序启动时将该可执行文件添加至应用程序的第二存储组件对应的位置,即可形成第一存储组件。
93.在应用程序的运行过程中,当检测到待存储数据的数据量大于预设数据量阈值时,系统调用原有的第二存储组件对应的api,便会自动调用第一存储单元进行数据存储;当检测到待存储数据的数据量小于或等于预设数据量阈值时,系统调用原有的第二存储组件对应的api,便会自动调用第二存储单元进行数据存储,如此,在应用程序的运行过程中实现待存储数据存储方式的动态切换。
94.在一些实施例中,如图4所示,所述方法还包括:
95.s401:在所述应用程序的编译阶段,对所述第一存储实例和所述第二存储组件对应的第二存储实例进行封装,得到所述第一存储组件;
96.s402:在所述应用程序启动时,使用所述第一存储组件替换所述第二存储组件。
97.上述步骤s2031和s2032中,在应用程序的编译阶段预先封装得到第一存储单元,进而在应用程序启动后将第一存储单元添加至第二存储单元所在的位置,形成第一存储组件。而步骤s401至步骤s402中,可以在应用程序的编译阶段将第一存储单元的第一存储实例和第二存储组件对应的第二存储实例预先配置、封装在一起,得到第一存储组件;然后,在应用程序启动后,通过反射机制获取对应的第二存储组件,确定第二存储组件的位置后,便可利用预先封装好的第一存储组件直接替换第二存储组件。步骤s2031和s2032直接将第一存储单元添加至第二存储组件中可以减少数据处理量,提高处理效率;而步骤s401和步骤s402通过预先封装形成第一存储组件,可以实现快速替换,提高应用程序启动后的运行效率。
98.上述实施例中,基于android系统的sharedpreferences存储对本公开实施例的数据存储方法进行了说明。具体实施中,上述方法也可以适用于运行于其它操作系统的应用程序的数据存储,例如,ios系统提供了nsuserdefaults类以对数据量较小的一些用户的基本配置信息进行存储。为防止对超过一定的数据量阈值的基本配置信息进行存储时可能导致的数据丢失或系统崩溃,可以如上述方法一样,将ios系统提供的nsuserdefaults类作为第二存储组件,自定义创建既包含原生nsuserdefaults存储方式又包含新的大数据存储方式的第一存储组件,并在应用程序启动时,使用第一存储组件替换第二存储组件,从而在应用程序在ios系统的运行过程中,根据待存储数据的数据量大小动态切换不同的存储方式进行数据存储,保证原生nsuserdefaults组件存储性能的同时,提供较佳的大数据存储性能。
99.可以理解的是,上述实施例主要对数据存储方法进行了说明,在需要将使用上述数据存储方法存储的已存储数据从第一存储单元或第二存储单元读取时,可以根据需要读取的待读取数据的数据量大小通过调用原有第二存储组件对应的api即可将所需的数据从第一存储组件对应的存储单元中取出,具体的数据读取方法可以参考上述数据存储方法,
此处不再赘述。
100.图5为本公开实施例的数据存储装置的结构示意图。如图5所示,本公开实施例提供了一种数据存储装置,包括:
101.获取模块501,配置为获取应用程序运行时的待存储数据;
102.判断模块502,配置为判断所述待存储数据的数据量是否大于预设数据量阈值;
103.存储模块503,配置为若所述待存储数据的数据量大于预设数据量阈值,使用第一存储组件中的第一存储单元存储所述待存储数据;若所述待存储数据的数据量不大于所述预设数据量阈值,使用第一存储组件中的第二存储单元存储所述待存储数据,其中,所述第一存储组件在所述应用程序启动时替换第二存储组件得到,所述第二存储组件的存储方式与所述第二存储单元的存储方式相同。
104.可选地,所述第一存储组件为sharedpreferences组件,所述第一存储单元以文件和/或数据库的形式存储所述待存储数据,所述第二存储单元以xml的形式存储所述待存储数据。
105.在一些实施例中,数据存储装置还包括替换模块,配置为在所述应用程序启动时,使用所述第一存储组件替换所述第二存储组件,替换模块具体包括:
106.第一获取单元,配置为在所述应用程序启动时,获取所述应用程序的application对象实例;
107.第二获取单元,配置为基于所述application对象实例通过反射机制获取所述应用程序的第二存储组件;
108.替换单元,配置为使用所述第一存储组件替换所述第二存储组件。
109.在一些实施例中,第二获取单元具体配置为:
110.基于所述application对象实例获取所述应用程序的包名;
111.基于所述应用程序的包名从预设的存储变量中获取所述应用程序对应的第二存储组件,其中,所述预设的存储变量中以map结构存储有多个应用程序的包名和对应的第二存储组件。
112.在一些实施例中,替换单元具体配置为:
113.将所述第二存储组件的第二存储实例确定为所述第二存储单元;
114.将包含第一存储实例的所述第一存储单元添加至所述第二存储组件中,形成所述第一存储组件。
115.在一些实施例中,替换模块还包括:
116.创建单元,配置为基于所述应用程序创建自定义的第一存储实例;
117.第一封装单元,配置为在所述应用程序的编译阶段,对所述第一存储实例进行封装,得到所述第一存储单元。
118.在一些实施例中,替换模块还包括:
119.第二封装单元,配置为在所述应用程序的编译阶段,对所述第一存储实例和所述第二存储组件对应的第二存储实例进行封装,得到所述第一存储组件;
120.所述替换单元,配置为在所述应用程序启动时,使用通过所述第二封装单元封装得到的所述第一存储组件替换所述第二存储组件。
121.本公开实施例提供的数据存储装置与上述实施例中数据存储方法相对应,基于上
述的数据存储方法,本领域的技术人员能够了解本公开实施例中数据存储装置具体实施方式以及其各种变化形式,数据存储方法实施例中的任何可选项也适用于数据存储装置,在此不再赘述。
122.图6为本公开实施例的电子设备的结构示意图。如图6所示,本公开实施例的电子设备包括存储器601与处理器602,存储器601用于存储至少一条计算机程序指令,处理器602用于通过加载并执行所述至少一条计算机程序指令以实现如上实施例所述的数据存储方法。
123.存储器601可用于存储软件程序以及模块,如本公开实施例中的数据存储方法对应的程序指令/模块,又如上述实施例所述的应用程序及对应的待存储数据。处理器602通过运行存储在存储器601内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据存储方法。
124.存储器601可以包括随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。
125.在一些实施例中,存储器601还包括第一存储区域6011和第二存储区域6012,第一存储区域6011和第二存储区域6012可以为专用的非易失性存储器,第一存储区域6011用于存储上述使用第一存储单元存储的文件和/或数据库格式的数据,第二存储区域6012用于存储上述使用第二存储单元存储的xml格式的数据。通过专用的第一存储区域6011和第二存储区域6012分别对不同数据量大小的待存储数据进行存储,方便及时读取数据,提高数据存取速率,且能够保证数据存储的安全性。
126.本公开实施例还提供一种计算机存储介质,所述计算机存储介质上存储有计算机程序指令;所述计算机程序指令被处理器执行时实现如上实施例所述的数据存储方法。
127.本公开实施例的计算机可读存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
128.本公开实施例中,可以以一种或多种程序设计语言或其组合来编写用于执行本公开操作的计算机执行指令程序代码,所述程序设计语言包括java、c++、php、python等。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或终端上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
129.以上实施例仅为本公开的示例性实施例,不用于限制本公开,本公开的保护范围由权利要求书限定。本领域技术人员可以在本公开的实质和保护范围内,对本公开做出各
种修改或等同替换,这种修改或等同替换也应视为落在本公开的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1