【笨鸟先飞】android重新学习日记8---储存数据的方法
来源:互联网 发布:ubuntu查看opencv路径 编辑:程序博客网 时间:2024/05/16 16:11
储存数据的方法有五种:SharedPreferences、文件、数据库、ContentProvider、网络储存。
为什么要储存数据,储存数据最主要是针对,重启程序和重启手机的情况。在程序运行过程中,数据都存在缓存里,不会丢失,但是程序一旦丢失
这5种方法一般针对不同的需求。
SharedPreferences:针对选择型的开关。同时也是有变化的选择。可以作为一种状态的记录。比如一个挑战类的游戏,要记录游戏的最高分,就要考虑采用SharedPreferences。再比如,游戏的声音和音效,是开启还是关闭,也考虑采用SharedPreferences。这种单个的需要保存,即下次再运行此程序要保留的数据,最佳手段是采用SharedPreferences。
文件:有一类是xml文件使用较多,用户存储数据量大,格式规则,不易修改的内容,主要用于配置文件。对文件的初始化进行操作,就使用文件来保存。
第二类是文字保存类工具,用来保存用户的输入的内容,比如备忘录,office等等,他们会创建对应的文件来统一保存用户输入的类容。
数据库:用于保存数据量大,格式规则的容易修改的内容。比如,通话记录。其实,数据量大和小基本代表着规整与否。数据量大的,自然这些数据会有统一的规则。对于就一两个数据的,不规则的,数据量自然小。
ContentProvider:用于需要程序间交互的数据,上一章已经讲解。
网络储存:
数据量巨大,本地保存是在太占空间。
数据比较重要,不希望其因为手机受损而丢失。
数据希望对用户不可见,希望用户无法修改数据内容 等情况
上一章已经讲解的ContentProvider,ContentProvider一共提供了4种处理数据的方法,分别是查询,插入,删除和更新。
Android对于数据库也是提供的这4种方法。
当然里面的参数是不一样的。里面不再使用URI,而是用数据库来调用这4种方法。
db.insert ( table, column,values)
里面涉及到的几个重点参数,首先是
db是一个databases类,当你创建了数据库后,在手机里面的data去下面,确实会生成一个databases的文件,后缀是.db
Table是这个数据库里面的数据分类,一个数据库不是只能存储一个类型的,它可以有很多个table。这个table和excel的sheet是一样的。
每个table里面是具体储存的数据,单个table就是表格。
每一行是一个数据,每一列是一个数据类型以及名字。
一行一个数据,就是这一行是一个数据的相关信息,有名字,有里面的各种数据。
Column就是行的判断。第几行,大部分时候,这里填写null。
最后是values,values和intent的extra有点类似,是使用键值对来完成的数据传输。
使用的是ContentValues values来实现的。
写法上是values.put(列名,具体内容) ; 一个values可以put多个键值对。
从上面可以看到,当我们有较多的数据希望储存的时候,先有一个创建数据库的动作,创建的数据库尽量放在在和APK文件夹名字挂钩的文件下。具体创建方法可以去网上找,已经是套路,没有什么变通的地方。
创建完数据库,则要创建table,一个table下面存放一个数据大类。
这个数据大类是什么意思,什么叫做数据大类?
Android是基于java的编程,是面向对象的编程。数据都是以对象的形式来储存,一个对象里面会有许多数据,就一个文字,都会有字体,颜色,大小,是否加粗,是否下划线等等参数。
我们往往要保存的数据大类就是指对象,某些创建的对象是要和用户进行交互的,这些对象在每次开机后,我们都希望其保持相同的特征,这个特征我们就保存在数据库里。
因为是对象,更应该说是很多相同的对象,所以数据库用来保存相同规则的数据,这个规则就是类的成员变量。
每一行就是一个对象,每个对象对应很多数据。这是因为数据库只能保存基本数据类型外加字符串。也就是说,不能把对象作为一个数据存放到数据库里。
所以其实values的写法是:
values.put(类的成员变量名, 对象的具体内容值) ;
以上就是数据库。
接着再讲讲SharedPreferences的用法:一个是editor,一个是OnSharedPreferenceChangeListener
Editor是写入SharedPreferences的一个关键。其实我们理解SharedPreferences就是数据库的一个table,而且里面就一行,这一行就是SharedPreferences,但是它有很多列。我们就是把数据存到里面每一列去。
SharedPreferences的editor提供了put和get方法,都是按照名字和结果统一存取。即在存储的时候是名字和数据共同存入。
先用editor写需要存入的数据,然后使用commit才算是真正的写入,初学者容易犯没commit的错误。
OnSharedPreferenceChangeListener,里面重写onSharedPreferenceChanged可以监控SharedPreferences的变化,达到及时反应的目的。
这里是否需要监控是这么个判断。
如果开关不需要保存,那么无需监控变化,直接在开关时,代码调用就行。如果开关使用了SharedPreferences,则考虑是否使用代码调用了。这个地方如果调用方便还是可以调用。但是如果响应开关的对象类型较多,那么建议使用OnSharedPreferenceChangeListener。这样做耦合度低,后期维护会容易很多。
- 【笨鸟先飞】android重新学习日记8---储存数据的方法
- 【笨鸟先飞】android重新学习日记9--- 常量数据的储存位置
- 【笨鸟先飞】android重新学习日记7---传递数据的方法(contentProvider)
- 【笨鸟先飞】android重新学习日记4---程序的生命周期
- 【笨鸟先飞】android重新学习日记1---布局
- 【笨鸟先飞】android重新学习日记2---组件
- 【笨鸟先飞】android重新学习日记5---intent
- 【笨鸟先飞】Java重新学习日记1---符号与数据
- 【笨鸟先飞】android重新学习日记3---识别用户行为
- 【笨鸟先飞】android重新学习日记10---图片与动画
- 【笨鸟先飞】android重新学习日记6---使用intent的组件(广播Broadcast)
- 【笨鸟先飞】Java重新学习日记5---类的使用
- 【笨鸟先飞】Java重新学习日记6---类的使用(2)
- 【笨鸟先飞】Java重新学习日记8---泛型的深入学习
- 【笨鸟先飞】Java重新学习日记3---数组
- 【笨鸟先飞】Java重新学习日记10---多线程
- 【笨鸟先飞】Java重新学习日记2---控制流程
- 【笨鸟先飞】Java重新学习日记4---类和对象
- 【Codeforces 840 A. Leha and Function】& 构造
- JSON和JSONP,也许你会豁然开朗
- sql查询一个字段包含另一个字段内容
- 继承与面向对象设计
- 栈——设计一个有getmin功能的栈
- 【笨鸟先飞】android重新学习日记8---储存数据的方法
- python学习——Python3.x版本中filter(),map()函数的变化
- ZooKeeper学习第一期---Zookeeper简单介绍
- 模板与泛型编程
- McCabe环路复杂度计算
- 数据采集知识点总结
- :=的用法
- HDU
- Ajax跨域(jsonp) 调用JAVA后台