前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android中数据存储,知多少?

Android中数据存储,知多少?

作者头像
用户5521279
发布2020-01-17 17:48:38
9550
发布2020-01-17 17:48:38
举报
文章被收录于专栏:搜狗测试搜狗测试

【前言】

小编在地图项目,产品应用有各种数据,如:离线地图数据、离线语音数据、模板包、地图样式文件、收藏及历史数据等等。项目遇到应用数据相关的测试任务,小编对Android数据存储进一步学习和总结,2020我们一起努力吧!

【一. Android中数据存储】

Android的数据存储有5种方式

(1). 文件存储

(2). SharedPreference存储

(3). SQLite数据库存储

(4). 使用ContentProvider存储数据

(5). 网络存储数据

Android 应用数据文件存储路径

Android studio连接设备,利用Device File Explorer(Android Studio 3.0 工具)

进入到/data/data//files/目录下,可以看到文件了。

打开方式一:View->Tool|Windows->Device File Explorer

打开方式二:

举例:文件可导出,可删除,可上传覆盖

【二. 数据存储方式】

1. SharedPreferences存储数据

SharedPreferences数据存储,也叫作xml存储。是将数据存储 “data/data/<package name>/share_prefs”路径下的到xml文件中。

特点:

SharedPreferences数据存储方式,用来存储一些简单的信息(比如应用程序的各种配置信息),位于android.content包中,以键值对(key-value)的模式进行存储。存储的基本信息,如int,string,boolean,float和long类型。

SharedPreferences数据文件示例:

不难看出,SharedPreferences数据文件的根元素是<map…/>,该元素里每个子元素代表一个key-value对,当value是字符串类型时,使用<string…/>子元素。

获得SharedPreferences对象的方法

SharedPreferences本身是一个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的方法获取SharedPreferences实例;

(1). 通过Context的getSharedPrerences(key, [模式])方法获取SharedPreferences对象;方法的第一个参数是用于指定SharedPreferences文件的名称,第二个参数是指定操作模式,主要有两种模式进行选择:MODE_PRIVATE, MODE_MULTI_PROCESS。默认操作是MODE_PRIVATE。(因为存在安全漏洞,Android 4.2开始不再推荐使用MODE_EORLD_READEABLE,MODE_WORLD_WRITEABLE这两种模式)。

(2). 通过Activity类提供的getPrerences(key)方法获取到SharedPreferences对象;该方法会创建一个以当前活动类名作为SharedPreferences文件名的文件。

(3). 通过PreferencesManager类中的getDefaultPreferernces()方法获得;这是一个静态的方法,他接受一个Context参数,并将当前应用程序的包名作为SharedPreferences文件名。

示例:

2. 文件存储数据

文件存储是Android中最基本的一种存储方式,和Java中实现I/O的方式,由Context类提供openFileInput()和openFileOutput()方法打开。文件存储主要分两种存储,一种是内部存储,一种是外部存储。

内部存储

内部存储是应用程序使用Android为自己分配的内存空间,数据存储到“/data/data/<package name>/files”路径下的相应文件中。

Context提供了两个方法来打开应用程序的数据文件夹里的文件IO流。

(1)files目录下读数据:FileInputStream openFileInput(String filename),打开应用程序的数据文件夹下的filename文件对应的输入流;

(2)files目录下写数据:FileOutputStream openFileOutput(String filename, int mode),打开应用程序的数据文件夹下的filename文件对应的输出流;

mode参数:打开文件的模式

(1)MODE_PRIVATE:该文件只能被当前程序读写;

(2)MODE_APPEND:以追加方式打开该文件,应用程序可再向该文件追加新的内容。

(还有MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE,这两种模式表示允许其他应用程序对我们的程序文件进行读写操作,因存在安全漏洞,Android 4.2不再推荐使用)

示例:

外部存储

外部存储是使用手机sdcard的内存(这个sdcard并不是我们经常说的那个可以拆卸替换的SD卡,那个SD卡我们称之为扩展卡)。

使用外部存储要在AndroidManifext.xml中加入访问权限:

外部存储,使用Enviroment类中的getExternalStorageDirectory()方法对外部存储上的文件进行读写。

示例

3. SQLite数据库存储数据

SQLite是一款轻量级的关系型数据库,它的运算很快,占用空间小;SQLite不仅有SQL语法支持,独立,还有数据库的ACID事务,SQLite数据库为一种嵌入式数据库。使用数据库进行存储,这个一般数据量比较大的时候。

数据库文件会存在/data/data/<package name>/databases/目录下。

Android 提供了SQLiteDatabase代表一个数据库(底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来就可以通过SQLiteDatabase对象来管理、操作数据库了。

(1)static SQLiteDatabaseopenDatabase(String path,SQLiteDatabase.CursorFactory factory,int flags):打开path文件所代表的数据库;

(2)static SQLiteDatabaseopenOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory):打开或创建path文件所代表的数据库;

(3)execSQL(Stringsql):执行一条SQL语句;

(4)insert(Stringtable,String nullColumnHack,ContentValues values):向指定表中插入数据;

(5)update(Stringtable,ContentValues values,String whereClause,String[] whereArgs):更新指定表中的特定数据;

(6)delete(Stringtable,String whereClause,String[] whereArgs):删除指定表中的特定数据;

(7)Cursor query(Stringtable,String[] columns,String selection,String[] selectionArgs,StringgroupBy,String having,String orderBy):对指定数据表进行查询;

SQLiteOpenHelper,它是SQLiteDatabase的辅助类,通过对SQLiteDatabase内部方法的封装简化了数据库创建与版本管理的操作。SQLiteOpenHelper为抽象类,有两个要重写的方法:onCreate()和onUpgrade(),用于管理数据库的创建和升级。借助SQLiteOpenHelper类对数据库SQLite进行“增、删、改、查”操作。

数据库工具SQLite Expert Personal

应用程序数据库目录导出的db文件,可以利用数据库工具SQLite Expert Personal,方便查看以及进行操作,如下图示。当然,也可以直接用adb shell查看数据库。

4. 使用ContentProvider存储数据

ContentProvider也是Android的四大组件之一。ContentProvider一般是第三方提供的数据存储方式,用于在不同应用程序之间实现数据的共享功能。像我们手机中的通讯录联系人,照片,音乐等。

5. 网络存储数据

将数据上传到网络上进行存储。

【三. 参考】

https://blog.csdn.net/to_be_designer/article/details/48272759

https://blog.csdn.net/to_be_designer/article/details/48274691

https://juejin.im/post/5b80b5adf265da43351d5eb2

https://juejin.im/post/5a5f18d06fb9a01caa209026

https://www.jianshu.com/p/b524550f4e87

欢迎添加我们的搜狗测试微信号,与我们一起聊聊测试

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Android 应用数据文件存储路径
  • 示例:
  • 2. 文件存储数据
  • 3. SQLite数据库存储数据
  • 4. 使用ContentProvider存储数据
  • 5. 网络存储数据
    • https://blog.csdn.net/to_be_designer/article/details/48272759
    相关产品与服务
    数据保险箱
    数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档