上文学习和了解了Android中的网络获取数据的方式 , 基于性能和程序运行效率等各方面的需要 , 应用本地也需要存储数据 , 供引用功能使用 。比如离线数据 , 模板包数据 , 样式文件 , 历史浏览数据等各种类型的数据 , 均需要存储起来 。
一、常见数据存储方式在android中 , 通用的数据存储归纳方式可以总结为一下几类:
文件存储:将数据存储在文件中 。文件存储根据位置不同 , 可以存储在应用的包下 , 也可以存储在公共的sd上 , 称之为外部存储 。SharedPreference存储:将数据以键值对的形式进行存储 , 该种存储方式一般会存一些引用的设置信息 , 属于一种轻量级的存储机制 。xmlSQLite数据库存储:Android系统中的轻量级关系型数据 , 允许用户进行创建表结构 , 存储应用数据等操作 。使用ContentProvider存储数据:在应用程序之间 , 共享或者传递相关信息时 , 往往可以使用ContentProvider和ContentResolver实现 , 在前文已经做过叙述 , 此处不再赘述 。网络获取:通过接口数据从服务器后台获取 , 需要网络访问SharedPreference存储SharedPreference是Android提供的用来存储一些简单配置信息的一种机制 , 核心原理是:保存基于XML文件存储的key-value键值对数据 。通常使用该种方式用来存储一些简单信息 , 例如:应用版本信息 , 应用主题类型等等 。其采用了Map数据结构来存储数据 , 以键值对的方式存储 , 可以简单的读取与写入 。
主要的特点和用法总结如下所示:
SharedPreferences本身是一个接口 , 无法直接创建SharedPreferences实例 。可以通过Context提供的getSharedPreferences(Stringname,intmode)方法来获取SharedPreferences实例 , 第一个参数表示要操作的xml文件名 , 第二个参数表示操作模式:MODE_PRIVATMODE_WORLD_READABLMODE_WORLD_WRITEABLE , 推荐使用MODE_PRIVATE 。Editor:SharedPreferences只能获取数据 , 不能存储和修改 。存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现 。SharedPreferences对应的xml文件位置:/data/data/packagename/shared_prefs/文件存储内部存储核心原理:上下文Context提供了很多方法来打开数据文件里的文件 , 常用的API如下:
getDir(Stringname,intmode):内部存储根目录下的文件夹 , 如果不存在则会新建 。该目录的位置是data/data/<包名/ 。getFilesDir():返回报名目录下的文件夹 , 对应的目录依然是data/data/<包名/files/fileList():列举文件和文件夹 , 对应的目录是data/data/<包名/files/openFileInput(Stringname):打开文件输入流(不存在则抛出FileNotFoundException)openFileOut(Stringname,intmode):打开文件输出流(文件不存在则新建)deleteFile(Stringname):删除文件或文件夹总结 , 以上这些Context提供的关于目录和文件的操作 , 均是在data/dat/包名及其目录下进行操作的 。
缓存getCacheDir:获取应用的缓存文件夹 , 缓存文件夹的目录位置是:data/data/包名/cache/getCodeCacheDir:存放优化过的代码 , 比如JIT优化文件访问模式MODE_PRIVATE:只对在应用内可见 , 使用最多的就是这种模式 。MODE_APPEND:如果文件存在 , 则在文件末尾追加;文件不存在 , 则与MODE_PRIVATE相同 。MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE:允许其他应用访问 , 但是在API17版本已经被弃用 , 不在推荐使用 , 从API版本24开始 , 禁止使用这两种常量模式 。外部存储除了内部存储空间可以存储内容外 , 在移动设备商 , 均带有外部存储介质 , 即外部存储(如SD卡) 。但是随着设备内置存储空间增大 , 很多设备已经足以将内置存储空间一分为二 , 一块为内部存储 , 一块为外部存储 。使用外部存储有两个点需要注意:
【Android中网络获取数据的方式 什么是手机数据存储模式】需要检测外部存储介质是否已经挂载外部存储的空间 , 所有的应用都可以访问并执行读写操作 。声明读写权限:WRITE_EXTERNAL_STORAGREAD_EXTERNAL_STORAGE , 从API19开始 , 已经不再需要声明读写权限 。外部存储空间可以分为两个部分 , 私有目录和公共目录
推荐阅读
- 海鲜粥怎么做好吃不腥 海鲜粥怎么做好吃
- 葛根粉怎么吃不寒
- 香蕉和桃子能一起吃吗
- 牛油果加酸奶可以减肥吗
- 吃了八个柿饼
- 什么手机搭配天机系统好
- 空心菜叶子黄了还可以吃吗
- 花甲为什么那么便宜
- 哪一年中伏10天