做应用保存一些数据是在所难免的啦。Android提供了五种保存数据的方式:
来看看他们各自适合什么情况:
<1>Shared Preferences:
这个最容易使用,但只能保存原生数据类型的数据(这样说不是很严谨,因为可以通过Base64编码的方式保存对象之类的东西,但很少会人这样做吧~~~)。
本质上保存的是把键值对(key-value pairs)在xml文件里。什么是键值对?百度去~~~
<2>Inernal Storage和External Storage:
这两个是同一回事。不同的是,前者保存在手机自带的存储器上,后者保存在SD卡上(这样说也是不准确的,应该叫做“拓展存储器”,这样只是好理解)。前者保存在应用的私有空间,不能被其它程序直接(注意是“直接”)访问。后者可以是自定义的路径,可以被别人访问的。这两者都是通过Java的IO操作来实现的。
<3>SQLite:
是个相当不错的轻量级的关系型数据库。多轻量?新版的就500多k!功能相当强大,性能也不错。存储结构化数据就靠它了。
<4>Network Connection:
就是通过网络存储(说的更高级点就叫“云存储”~~~)。把我们的数据存储到远程的服务器上,就这么回事。
好的,先来看看第一个SharedPreferences~~~
<1>获得一个SharedPreferences对象:
通过getSharedPreferences(String name, int mode)方法获得。这个方法的第一个参数是文件名,第二个是操作类型,一般使用MODE_PRIVATE。
<2>如何读取数据:
通过getXxx(String key, xxx defValue)来获得,key就是键值对的“键”,defValue就是当获得不到的时候用这个当做默认值。总共有以下几个:
这些从方法名就可以猜出功能了~~~
<3>如何添加数据:
通过调用SharedPreferences对象的edit()方法会返回一个实现SharedPreferences.Editor接口的对象,然后我们调用这个对象的putXxx(String key, xxx value)方法。最后要调用该对象的commit()方法提交。putXxx()方法来这么几个:
可以看到,这些方法都会返回实现Editor接口的对象,也就是说这用到了“方法链”的风格。我们可以连续putXxx().putXxx()…,这样可以少写很多代码。
<4>修改或删除数据:
这个也很简单,同样是要调用SharedPreferences对象的edit()方法会返回一个实现SharedPreferences.Editor接口的对象。删除某一个项的话,调用remove(String key)这个方法、如果想清空的话,就调用clear()方法。对了,怎么更新呢?好像没有相关的方法。其实,重新put一个key相同而值不同的项就是更新了。比如我之前存进去了一个key为age,value为20(int型)的一个项,我现在要把20改成21,我只要调用putInt(“age”, 20)就行了。注意,修改后要调用commit()方法提交!
<5>数据保存在哪呢:
在/data/data/应用的包名/shared_prefs/你定义的文件名.xml这里。导出打开是类似这样的存储的:
2012.11.30 by yjiyjige