基于Android 平台的数据存储机制应用研究

2014-06-18 00:17杨亮袁嵩等
电脑知识与技术 2014年11期
关键词:开源引擎应用程序

杨亮+袁嵩等

摘要:数据存储是Android应用程序开发必须首要解决的一个问题。Android系统提供了多种数据存储机制。针对如何正确、快速的选择合适的存储机制以及如何在程序设计中正确使用的问题,介绍了SharedPreferences、Files、NetWork和SQLite四种种数据存储机制,结合它们的原理,给出了具体的实现方法,并对其优缺点进行了分析。

关键词:数据存储;SharedPreferences;Files;NetWork;SQLite

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)11-2481-04

Abstract: Data storage is the primary problem in Android application development. Android provides a variety of data storage mechanisms. In order to select and apply the storage mechanisms correctly and rapidly in programming, four storage mechanisms, i.e. SharedPreferences, Files, NetWork and SQLite are presented, combining their principle, the specific implementation methods are proposed, and the advantages and disadvantages are analyzed.

Key words: data storage; SharedPreferences; Files; NetWork; SQLite

Android系统是一种以Linux为内核的操作系统,是一个完整、开放、免费和开源的智能移动开发平台,在手机、平板电脑和其它嵌入式产品中已广泛应用。Android应用程序种类繁多,极大方便了人们的日常生活。算法和数据是应用程序的核心,应用程序在进行存储和管理数据时可以使用不同的方式。网络存储和本地存储是Android系统数据存储的两种形式。该文主要对Android系统提供的数据存储机制进行研究,为程序开发人员提供参考,使之能够根据应用程序的数据存储需求选择适当的存储机制以及正确的使用方法。

1 Android的数据存储机制

作为一个完整的应用程序,数据存储操作是必不可少的。如何适当的选择存储机制是任何软件开发者都要面临的问题。数据必须以某种方式保存,并且确保以较少的资源方便、有效的使用和更新。Android平台为开发者提供了4种常用的数据存储机制

1.1.1 原理

SharedPreferences用来存储一些简单配置信息,将数据以XML格式存储到设备中[2]。例如保存用户的用户名和密码以便程序下次开启时可自动登录。SharedPreferences采用了Map数据结构来存储数据,以key-value键值对的方式存储,可以简单的读取和写入。每次对数据进行更改前先调用edit()使其处于编辑状态,然后才能修改数据,最后使用commit()提交修改的数据。

1.1.3 特点

SharedPreferences对象不用像SQLite等数据库管理系统那样创建数据库,创建表,写SQL语句等操作,比起SQLite数据库更加方便,简洁。但是SharedPreferences也有其自身缺陷,例如存储类型有限,只能存储boolean、int、float、long和String五种简单的数据类型。并且其无法进行条件查询。所以虽然SharedPreferences的数据存储操作简单,但也只能是存储方式的一种补充,面对数据量大的存储时不如SQLite数据库这样的数据存储方式优越,而且开发人员无法在多个应用程序间共享SharedPreferences数据。

1.2.1 原理

Files存储机制是通过Java中的IO流来对文件进行操作[3]。然而在Android平台中,文件是应用程序私有的,一个程序的文件只能被此程序解读。Android平台可以把数据保存在设备本身的存储设备或外接的存储设备中,文件是不能在不同的程序之间共享的,只能通过Java中IO流进行文件操作。

1.2.3 特点

Files存储就是把需要保存的数据通过文件的形式记录下来,当需要这些数据时,通过读取这个文件来获取这些数据。由于Android 平台是基于Linux开发的,所以在Android 平台中,文件也是Linux 的形式。Android中可以在设备本身的存储或者外接的存储设备中创建用于保存数据的文件。同时,在默认状态下,文件是不能在不同的程序间共享的。它可以存储大容量的数据,但是文件的增删改查会带来繁重的代码工作。

1.3.1 原理

NetWork存储机制是通过网络资源存储和获得存储空间的方式来进行数据存储。此种方法需要设备保持网络连接状态,所以相对存在一些限制。将数据存储到网络上的方法很多,例如将要保存的数据以文件的形式上传到服务器或者发送邮件等。

1.3.3 特点

网络存储最大的特点是节省空间、存储方便、获取数据及时,不过也有它难以克服的弊端。主要是移动终端的网络稳定性差,并且所产生的高流量让人难以接受。但若是对于非常重要的实时数据,或是需要发送给远端服务器处理的数据,可以考虑使用网络实时发送。这又引出了用户隐私的问题,例如iPhone设备和Android设备都会在用户不知情的情况下收集用户信息,发送到Apple和Google的服务器上,不仅用户隐私难以保证,还会消耗大量的流量。endprint

1.4.1 原理

SQLite是一个轻量级的强大的嵌入式关系数据库引擎[4],支持 SQL 语言。它占用空间低、运行效率高,特别适合嵌入式设备,已经成为一个健壮的数据存储机制。Android平台给开发者提供了一个SQLiteOpenHelper类,它是一个用来管理数据库的创建和版本的辅助类,可以通过继承这个类,实现它的一些方法来对数据库进行操作,其工作原理如图1所示。

1.4.3 特点

SQLite是开源的轻量级嵌入式数据库引擎,它比Mysql、PostgreSQL这些著名的数据库管理系统都要快。同样它也还是开源的,任何人都可以使用它。许多开源项目(Mozilla, PHP, Python)都使用了 SQLite。SQLite主要由SQL 编译器、内核、后端以及附件四个组件组成。SQLite 通过利用虚拟机和虚拟数据库引擎使调试、修改和扩展SQLite 的内核变得更加方便,并且SQLite提供了可视化工具使得数据操作更加直观。

2 结束语

本文分析了Android平台的SharedPreferences、Files、SQLite、NetWork四种常用存储机制的原理、使用步骤、关键类和优缺点,为开发人员在进行存储机制选择时提供参考。在处理轻量级的数据存储时选择SharedPreferences用于配置应用程序状态和参数等简单信息。File存储方式是最常用的,根据文件存储的路径分为内部存储和外部存储,当需要确保文件不被其它应用程序访时,选择内部存储,当数据量较大时,应用程序通常将文件存储在非默认目录下的文件存储中即外部存储器,例如一个microSD卡。为了提高应用程序信息更新的及时性,方便信息推送,Android平台使用NetWork网络资源进行存储,不仅获得了额外的存储空间,而且极大的方便了与服务器之间的信息交互,但是也会出现暴露用户隐私的问题。为了更加高效的对文件进行处理,在Android平台上,集成了一个嵌入式关系型数据库——SQLite。Android平台提供了一个名为SQLiteOpenHelper的类,该类封装了一些操作数据库的API。通过SQLite可以使文件更加结构化,是处理复杂文件的不二选择。

参考文献:

[1] Kiwi Inc.Data Storage[EB/OL]. (2013-07-25).http://developer.android.com/guide/topics/data/index.html.

[2] Lauren D,Shane C.Android移动开发一本就够[M].李卉,译.北京:人民邮电出版社,2011.

[3] 黄伟敏.Android平台的即时通信系统客户端设计方案[J].现代电子技术,2011,34(16): 140-142.

[4] D Richard H.About SQLite[EB/OL]. (2013-07-25).http://www.sqlite.org/about.html.endprint

1.4.1 原理

SQLite是一个轻量级的强大的嵌入式关系数据库引擎[4],支持 SQL 语言。它占用空间低、运行效率高,特别适合嵌入式设备,已经成为一个健壮的数据存储机制。Android平台给开发者提供了一个SQLiteOpenHelper类,它是一个用来管理数据库的创建和版本的辅助类,可以通过继承这个类,实现它的一些方法来对数据库进行操作,其工作原理如图1所示。

1.4.3 特点

SQLite是开源的轻量级嵌入式数据库引擎,它比Mysql、PostgreSQL这些著名的数据库管理系统都要快。同样它也还是开源的,任何人都可以使用它。许多开源项目(Mozilla, PHP, Python)都使用了 SQLite。SQLite主要由SQL 编译器、内核、后端以及附件四个组件组成。SQLite 通过利用虚拟机和虚拟数据库引擎使调试、修改和扩展SQLite 的内核变得更加方便,并且SQLite提供了可视化工具使得数据操作更加直观。

2 结束语

本文分析了Android平台的SharedPreferences、Files、SQLite、NetWork四种常用存储机制的原理、使用步骤、关键类和优缺点,为开发人员在进行存储机制选择时提供参考。在处理轻量级的数据存储时选择SharedPreferences用于配置应用程序状态和参数等简单信息。File存储方式是最常用的,根据文件存储的路径分为内部存储和外部存储,当需要确保文件不被其它应用程序访时,选择内部存储,当数据量较大时,应用程序通常将文件存储在非默认目录下的文件存储中即外部存储器,例如一个microSD卡。为了提高应用程序信息更新的及时性,方便信息推送,Android平台使用NetWork网络资源进行存储,不仅获得了额外的存储空间,而且极大的方便了与服务器之间的信息交互,但是也会出现暴露用户隐私的问题。为了更加高效的对文件进行处理,在Android平台上,集成了一个嵌入式关系型数据库——SQLite。Android平台提供了一个名为SQLiteOpenHelper的类,该类封装了一些操作数据库的API。通过SQLite可以使文件更加结构化,是处理复杂文件的不二选择。

参考文献:

[1] Kiwi Inc.Data Storage[EB/OL]. (2013-07-25).http://developer.android.com/guide/topics/data/index.html.

[2] Lauren D,Shane C.Android移动开发一本就够[M].李卉,译.北京:人民邮电出版社,2011.

[3] 黄伟敏.Android平台的即时通信系统客户端设计方案[J].现代电子技术,2011,34(16): 140-142.

[4] D Richard H.About SQLite[EB/OL]. (2013-07-25).http://www.sqlite.org/about.html.endprint

1.4.1 原理

SQLite是一个轻量级的强大的嵌入式关系数据库引擎[4],支持 SQL 语言。它占用空间低、运行效率高,特别适合嵌入式设备,已经成为一个健壮的数据存储机制。Android平台给开发者提供了一个SQLiteOpenHelper类,它是一个用来管理数据库的创建和版本的辅助类,可以通过继承这个类,实现它的一些方法来对数据库进行操作,其工作原理如图1所示。

1.4.3 特点

SQLite是开源的轻量级嵌入式数据库引擎,它比Mysql、PostgreSQL这些著名的数据库管理系统都要快。同样它也还是开源的,任何人都可以使用它。许多开源项目(Mozilla, PHP, Python)都使用了 SQLite。SQLite主要由SQL 编译器、内核、后端以及附件四个组件组成。SQLite 通过利用虚拟机和虚拟数据库引擎使调试、修改和扩展SQLite 的内核变得更加方便,并且SQLite提供了可视化工具使得数据操作更加直观。

2 结束语

本文分析了Android平台的SharedPreferences、Files、SQLite、NetWork四种常用存储机制的原理、使用步骤、关键类和优缺点,为开发人员在进行存储机制选择时提供参考。在处理轻量级的数据存储时选择SharedPreferences用于配置应用程序状态和参数等简单信息。File存储方式是最常用的,根据文件存储的路径分为内部存储和外部存储,当需要确保文件不被其它应用程序访时,选择内部存储,当数据量较大时,应用程序通常将文件存储在非默认目录下的文件存储中即外部存储器,例如一个microSD卡。为了提高应用程序信息更新的及时性,方便信息推送,Android平台使用NetWork网络资源进行存储,不仅获得了额外的存储空间,而且极大的方便了与服务器之间的信息交互,但是也会出现暴露用户隐私的问题。为了更加高效的对文件进行处理,在Android平台上,集成了一个嵌入式关系型数据库——SQLite。Android平台提供了一个名为SQLiteOpenHelper的类,该类封装了一些操作数据库的API。通过SQLite可以使文件更加结构化,是处理复杂文件的不二选择。

参考文献:

[1] Kiwi Inc.Data Storage[EB/OL]. (2013-07-25).http://developer.android.com/guide/topics/data/index.html.

[2] Lauren D,Shane C.Android移动开发一本就够[M].李卉,译.北京:人民邮电出版社,2011.

[3] 黄伟敏.Android平台的即时通信系统客户端设计方案[J].现代电子技术,2011,34(16): 140-142.

[4] D Richard H.About SQLite[EB/OL]. (2013-07-25).http://www.sqlite.org/about.html.endprint

猜你喜欢
开源引擎应用程序
删除Win10中自带的应用程序
五毛钱能买多少头牛
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
开源计算机辅助翻译工具研究
无形的引擎
基于Cocos2d引擎的PuzzleGame开发
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序
One Engine Left只剩下一个引擎