zoukankan      html  css  js  c++  java
  • Android学习笔记(二)——Android的数据存储(一)SharedPreferences

    做应用保存一些数据是在所难免的啦。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

  • 相关阅读:
    [HDOJ1261]最少拦截系统
    Gym 100637F F. The Pool for Lucky Ones
    Codeforces Gym 100637A A. Nano alarm-clocks 前缀和处理
    HDU 1166 敌兵布阵 线段树
    【Tyvj1038】忠诚 线段树
    Codeforces Gym 100513G G. FacePalm Accounting
    Codeforces Round #313 (Div. 2)B.B. Gerald is into Art
    Codeforces Round #313 (Div. 2) D. Equivalent Strings
    Codeforces Round #313 (Div. 2) C. Gerald's Hexagon 数学
    Codeforces Round #313 (Div. 2) A. Currency System in Geraldion
  • 原文地址:https://www.cnblogs.com/yjiyjige/p/2796760.html
Copyright © 2011-2022 走看看