做应用保存一些数据是在所难免的啦。Android提供了五种保存数据的方式:

  1. Shared Preference
  2. Inernal Storage
  3. External Storage
  4. SQLite Databases
  5. Network Connection

来看看他们各自适合什么情况:

<1>Shared Preferences

  这个最容易使用,但只能保存原生数据类型的数据(这样说不是很严谨,因为可以通过Base64编码的方式保存对象之类的东西,但很少会人这样做吧~~~)。

本质上保存的是把键值对(key-value pairs)在xml文件里。什么是键值对?百度去~~~

<2>Inernal StorageExternal 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

更多相关文章

  1. Android(安卓)WebView 踩过的坑
  2. Fragment使用
  3. Android(安卓)N 各种ANR的时间
  4. android-PullToRefreshListView自动刷新问题
  5. Android(安卓)Device Chooser中显示Target unknown解决方法
  6. Android(安卓)onFragmentInteraction(Uri uri) 方法
  7. AppWidgetProvider
  8. 解决通过Intent调用系统拍照程序,返回图片太小的问题[android]
  9. Android(安卓)调用系统的分享功能

随机推荐

  1. eclipse中使用RecyclerView报错:Error inf
  2. 与Android的系统打交道
  3. android下的android.os.StrictMode$Andro
  4. TextView字体逐渐变淡点以及程序特定list
  5. 解决Glide4.0和圆角裁剪CenterCrop冲突
  6. Ice Cream Sandwich系统将统一Android版
  7. Android(安卓)Build及相关类
  8. android webview 使用js加载json文件失败
  9. 让背景小图不是拉伸而是多个重复
  10. Android下相机的调用