【笨鸟先飞】android重新学习日记8---储存数据的方法

来源:互联网 发布:ubuntu查看opencv路径 编辑:程序博客网 时间:2024/05/16 16:11

储存数据的方法有五种:SharedPreferences、文件、数据库、ContentProvider、网络储存。

 

为什么要储存数据,储存数据最主要是针对,重启程序和重启手机的情况。在程序运行过程中,数据都存在缓存里,不会丢失,但是程序一旦丢失

 

5种方法一般针对不同的需求。

 

SharedPreferences:针对选择型的开关。同时也是有变化的选择。可以作为一种状态的记录。比如一个挑战类的游戏,要记录游戏的最高分,就要考虑采用SharedPreferences。再比如,游戏的声音和音效,是开启还是关闭,也考虑采用SharedPreferences。这种单个的需要保存,即下次再运行此程序要保留的数据,最佳手段是采用SharedPreferences

 

文件:有一类是xml文件使用较多,用户存储数据量大,格式规则,不易修改的内容,主要用于配置文件。对文件的初始化进行操作,就使用文件来保存。

第二类是文字保存类工具,用来保存用户的输入的内容,比如备忘录,office等等,他们会创建对应的文件来统一保存用户输入的类容。

 

数据库:用于保存数据量大,格式规则的容易修改的内容。比如,通话记录。其实,数据量大和小基本代表着规整与否。数据量大的,自然这些数据会有统一的规则。对于就一两个数据的,不规则的,数据量自然小。

 

ContentProvider:用于需要程序间交互的数据,上一章已经讲解。

 

网络储存:

数据量巨大,本地保存是在太占空间。

数据比较重要,不希望其因为手机受损而丢失。

数据希望对用户不可见,希望用户无法修改数据内容 等情况

 

 

上一章已经讲解的ContentProviderContentProvider一共提供了4种处理数据的方法,分别是查询,插入,删除和更新。

 

Android对于数据库也是提供的这4种方法。

 

当然里面的参数是不一样的。里面不再使用URI,而是用数据库来调用这4种方法。

 

db.insert ( table, column,values)

 

里面涉及到的几个重点参数,首先是

 

db是一个databases类,当你创建了数据库后,在手机里面的data去下面,确实会生成一个databases的文件,后缀是.db

 

Table是这个数据库里面的数据分类,一个数据库不是只能存储一个类型的,它可以有很多个table。这个tableexcelsheet是一样的。

每个table里面是具体储存的数据,单个table就是表格。

每一行是一个数据,每一列是一个数据类型以及名字。

一行一个数据,就是这一行是一个数据的相关信息,有名字,有里面的各种数据。

 

Column就是行的判断。第几行,大部分时候,这里填写null

 

最后是valuesvaluesintentextra有点类似,是使用键值对来完成的数据传输。

 

使用的是ContentValues values来实现的。

 

写法上是values.put(列名,具体内容) ;  一个values可以put多个键值对。

 

从上面可以看到,当我们有较多的数据希望储存的时候,先有一个创建数据库的动作,创建的数据库尽量放在在和APK文件夹名字挂钩的文件下。具体创建方法可以去网上找,已经是套路,没有什么变通的地方。

 

创建完数据库,则要创建table,一个table下面存放一个数据大类。

 

这个数据大类是什么意思,什么叫做数据大类?

 

Android是基于java的编程,是面向对象的编程。数据都是以对象的形式来储存,一个对象里面会有许多数据,就一个文字,都会有字体,颜色,大小,是否加粗,是否下划线等等参数。

 

我们往往要保存的数据大类就是指对象,某些创建的对象是要和用户进行交互的,这些对象在每次开机后,我们都希望其保持相同的特征,这个特征我们就保存在数据库里。

 

因为是对象,更应该说是很多相同的对象,所以数据库用来保存相同规则的数据,这个规则就是类的成员变量。

 

每一行就是一个对象,每个对象对应很多数据。这是因为数据库只能保存基本数据类型外加字符串。也就是说,不能把对象作为一个数据存放到数据库里。

 

所以其实values的写法是:

values.put(类的成员变量名, 对象的具体内容值) ; 

 

 

以上就是数据库。

 

 

接着再讲讲SharedPreferences的用法:一个是editor,一个是OnSharedPreferenceChangeListener

 

 

Editor是写入SharedPreferences的一个关键。其实我们理解SharedPreferences就是数据库的一个table,而且里面就一行,这一行就是SharedPreferences,但是它有很多列。我们就是把数据存到里面每一列去。

 

SharedPreferenceseditor提供了putget方法,都是按照名字和结果统一存取。即在存储的时候是名字和数据共同存入。

 

先用editor写需要存入的数据,然后使用commit才算是真正的写入,初学者容易犯没commit的错误。

 

OnSharedPreferenceChangeListener,里面重写onSharedPreferenceChanged可以监控SharedPreferences的变化,达到及时反应的目的。

 

这里是否需要监控是这么个判断。

 

如果开关不需要保存,那么无需监控变化,直接在开关时,代码调用就行。如果开关使用了SharedPreferences,则考虑是否使用代码调用了。这个地方如果调用方便还是可以调用。但是如果响应开关的对象类型较多,那么建议使用OnSharedPreferenceChangeListener。这样做耦合度低,后期维护会容易很多。

 

阅读全文
0 0
原创粉丝点击