zoukankan      html  css  js  c++  java
  • Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File 之 SharePreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:

      一、根据Context获取SharedPreferences对象

      二、利用edit()方法获取Editor对象。

      三、通过Editor对象存储key-value键值对数据。

      四、通过commit()方法提交数据。

      具体实现代码如下:

    复制代码
     1 public class MainActivity extends Activity {
    2
    @Override
    3 public void
    onCreate(Bundle savedInstanceState) {
    4 super
    .onCreate(savedInstanceState);
    5
    setContentView(R.layout.main);
    6

    7 //获取SharedPreferences对象

    8 Context ctx = MainActivity.this;
    9 SharedPreferences sp = ctx.getSharedPreferences("SP"
    , MODE_PRIVATE);
    10 //存入数据

    11 Editor editor = sp.edit();
    12 editor.putString("STRING_KEY", "string"
    );
    13 editor.putInt("INT_KEY", 0
    );
    14 editor.putBoolean("BOOLEAN_KEY", true
    );
    15
    editor.commit();
    16

    17 //返回STRING_KEY的值

    18 Log.d("SP", sp.getString("STRING_KEY", "none"));
    19 //如果NOT_EXIST不存在,则返回值为"none"

    20 Log.d("SP", sp.getString("NOT_EXIST", "none"));
    21
    }
    22 }
    复制代码

       这段代码执行过后,即在/data/data/com.test/shared_prefs目录下生成了一个SP.xml文件,一个应用可以创建多个这样的xml文件。如图所示: 

       SP.xml文件的具体内容如下:

    1 <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    2 <map>
    3 <string name="STRING_KEY">string</string>
    4 <int name="INT_KEY" value="0" />
    5 <boolean name="BOOLEAN_KEY" value="true" />
    6 </map>

      在程序代码中,通过getXXX方法,可以方便的获得对应Key的Value值,如果key值错误或者此key无对应value值,SharedPreferences提供了一个赋予默认值的机会,以此保证程序的健壮性。如下图运行结果中因为并无值为"NOT_EXIST"的Key,所以Log打印出的是其默认值:“none”。在访问一个不存在key值这个过程中,并无任何异常抛出。  

      SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。

  • 相关阅读:
    跃迁方法论 Continuous practice
    EPI online zoom session 面试算法基础知识直播分享
    台州 OJ 2648 小希的迷宫
    洛谷 P1074 靶形数独
    洛谷 P1433 DP 状态压缩
    台州 OJ FatMouse and Cheese 深搜 记忆化搜索
    台州 OJ 2676 Tree of Tree 树状 DP
    台州 OJ 2537 Charlie's Change 多重背包 二进制优化 路径记录
    台州 OJ 2378 Tug of War
    台州 OJ 2850 Key Task BFS
  • 原文地址:https://www.cnblogs.com/cosiray/p/2491626.html
Copyright © 2011-2022 走看看