当前位置: 首页 > news >正文

Android开发之数据存储——SharedPreferences基础知识详解,饿补学会基本知识,开发者必会它的用法。...

一、数据存储选项:Data Storage ——Storage Options【重点】
1、Shared Preferences
Store private primitive data in key-value pairs.
保存简单的键值对数据。
2、Internal Storage
Store private data on the device memory.
在手机内存中保存不对外共享的信息。
3、External Storage
Store public data on the shared external storage.
在外部存储设备上保存公共的数据信息。主要指保存在SDCard上。
4、SQLite Databases
Store structured data in a private database.
将结构化的数据保存进数据库。
5、Network Connection
Store data on the web with your own network server.
将数据保存到自己的远程服务器上。
【备注:】
内部存储空间十分有限,因而显得可贵,另外,它也是系统本身和系统应用程序主要的数据存储所在地,一旦内部存储空间耗尽,手机也就无法使用了。
所以对于内部存储空间,我们要尽量避免使用。Shared Preferences和SQLite数据库都是存储在内部存储空间上的。内部存储一般用Context来获取和操作。
getFilesDir()获取你app的内部存储空间,相当于你的应用在内部存储上的根目录。
最容易混淆的是外部存储,如果说pc上区分出外部存储和内部存储的话,那么自带的硬盘算是内部存储,U盘或者移动硬盘算是外部存储,因此我们很容易带着这样的理解去看待安卓手机,认为机身固有存储是内部存储,而扩展的SDCard卡是外部存储。比如Nexus 4有16G的内部存储,普通消费者可以这样理解,但是安卓的编程中不能,这16GB仍然是外部存储。

二、SharedPreferences:
(一)、概念:
SharedPreferences是Android系统提供的一个通用的数据持久化框架,用于存储和读取key-value类型的原始基本数据类型对,目前支持string、int、long、float、boolean等基本类型的存储,对于自定义的对象数据类型,无法使用SharedPreferences来存储。
SharedPreferences主要用于存储系统的配置信息。例如上次登录的用户名,上次最后设置的配置信息(如:是否打开音效、是否使用振动,小游戏的玩家积分等)。当再次启动程序后依然保持原有设置。SharedPreferences用键值对方式存储,方便写入和读取。

(二)、使用SharedPreferences的步骤:
1、获取SharedPreferences对象;
SharedPreferences本身是一个接口,无法直接创建实例,通过Context的getSharedPreferences(String name, int mode)方法来获取实例。
该方法的第二个参数有以下三个值:【文件读写的操作模式】
Context.MODE_PRIVATE: 指定该SharedPreferences的数据只能被本应用程序读、写;
Context.MODE_APPEND:新内容追加到原内容后;
Context.MODE_WORLD_READABLE: 指定 SharedPreferences数据能被其他应用程序读,但是不支持写;
Context.MODE_WORLD_WRITEABLE: 指定 SharedPreferences数据能被其他应用程序读、写。会覆盖原数据。
可以使用 + 连接这些权限。
2、调用edit()方法获取SharedPreferences.Editor;
3、通过SharedPreferences.Editor接口提供的put()方法对SharedPreferences进行更新;
4、调用SharedPreferences.Editor的commit()方法,将更新提交到SharedPreferences中。

因为SharedPreferences背后是使用xml文件保存数据,getSharedPreferences(name,mode)方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上。方法的第二个参数指定文件的操作模式,共有四种操作模式,

这四种模式代表的含义为:

Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。

另外Activity还提供了另一个getPreferences(mode)方法操作SharedPreferences,这个方法默认使用当前类不带包名的类名作为文件的名称。

转载于:https://www.cnblogs.com/mcxiaobing/p/5907364.html

相关文章:

  • xml的SAX解析过程详解
  • xml文件操作(利用dom4j)
  • aspx页面导出为word
  • mysql优化之索引优化
  • 使用SAX解析XML
  • AJAX实现类Google Suggest效果
  • Android:百度地图 + 百度导航
  • 文章太长了!~关于 XML 的一些基础知识
  • iOS: FFmpeg的使用一
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • HD1285(拓扑排序)
  • 如何用javascript设置延时执行
  • 设计模式--3.模板方法模式
  • 实现JSP数据和JavaScript数据交互使用
  • 使用Apache Xerces解析XML文档
  • 【刷算法】求1+2+3+...+n
  • canvas 绘制双线技巧
  • eclipse的离线汉化
  • Java,console输出实时的转向GUI textbox
  • Java-详解HashMap
  • Octave 入门
  • PHP 小技巧
  • Swift 中的尾递归和蹦床
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue小说阅读器(仿追书神器)
  • 程序员最讨厌的9句话,你可有补充?
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 离散点最小(凸)包围边界查找
  • 前端
  • 前端面试题总结
  • 实现菜单下拉伸展折叠效果demo
  • 学习Vue.js的五个小例子
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #etcd#安装时出错
  • #QT(TCP网络编程-服务端)
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (3)(3.5) 遥测无线电区域条例
  • (8)STL算法之替换
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (poj1.2.1)1970(筛选法模拟)
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET : 在VS2008中计算代码度量值
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net专家(张羿专栏)
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [AIGC] MySQL存储引擎详解
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [APIO2015]巴厘岛的雕塑