当前位置: 首页>数据库>正文

sharepreferences存储的xml目录 sharedpreferences如何存储数据

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

  一、根据Context获取SharedPreferences对象

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

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

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

  具体实现代码如下:


sharepreferences存储的xml目录 sharedpreferences如何存储数据,sharepreferences存储的xml目录 sharedpreferences如何存储数据_SQL,第1张



1 publicclass MainActivity extends Activity {
 2     @Override
 3 publicvoid 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 }


sharepreferences存储的xml目录 sharedpreferences如何存储数据,sharepreferences存储的xml目录 sharedpreferences如何存储数据_SQL,第1张


1、Context.getSharedPreferences(String name,int mode)来得到一个指定name的SharedPreferences实例

         name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package name>/shared_prefs下(这个面试常问到)

        mode:是指定读写方式,其值有三种,分别为:

            Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

            Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写

            Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。

2、PreferenceManager.getDefaultSharedPreferences(Context)来获取在同一个包名下的SharedPreferences实例

      context:为上下文对象

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


sharepreferences存储的xml目录 sharedpreferences如何存储数据,sharepreferences存储的xml目录 sharedpreferences如何存储数据_SQL_03,第3张

   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>


常用方法:
    public abstract boolean contains (String key) ----- 判断SharedPreferences是否包含特定key的数据
    public abstract SharedPreferences.Editor edit () ----- 返回一个Edit对象用于操作SharedPreferences
    public abstract Map<String, ?> getAll () ------ 获取SharedPreferences数据里全部的key-value对象
    getXXX(String key,XXX defvlaue) ------ 获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值
Editor接口的常用方法:
    public abstract SharedPreferences.Editor clear () ---- 清空SharedPreferences里所有的数据
    public abstract boolean commit () ----- 当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改
    public abstract SharedPreferences.Editor putXXX (String key, boolean XXX) ---- 向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值
    public abstract SharedPreferences.Editor remove (String key) ----- 删除SharedPreferences里指定key对应的数据项

  在程序代码


sharepreferences存储的xml目录 sharedpreferences如何存储数据,sharepreferences存储的xml目录 sharedpreferences如何存储数据_SQL_04,第4张

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


https://www.xamrdz.com/database/6v41951364.html

相关文章: