学习笔记(一) SharedPreferences知识整理

使用场景:

    应用程序有少量的数据需要保存,而这些数据的格式很简单,都是普通的字符串,标量类型值等,比如:应用程序的各种配置信息(是否打开音效,是否使用振动),小游戏玩家的积分等。

SharedPreference 的存储位置和格式:

存储位置:/data/data//shared_prefs目录下
存储格式:以xml格式保存,根元素是,该元素里面每个子元素代表一个key_value对,当是整数类型时,使用子元素,当是字符串类型时,使用以此类推。

SharedPreference 接口的常用方法。

>读出:

contains("key"):判断是否包含指定键的值
getAll():获取SharedPreference中存储的所有键值对,返回一个map集合
getXxx(String key,value):获取指定键所对应的值。

>写入:
注意:SharedPreference 本身并没有写入数据的能力,而是通过它的内部接口Editor对象来写入的。调用它的edit()方法,即可得到这个内部对象。

SharedPreferences.Editor  edit():获得Editor的实例对象
putXxx(String key,xxx  value):向SharedPreference 中存入指定key对应的值,其中Xxx可以是boolean ,int ,long,String 等基本类型。
remove(String key):删除SharedPreference中的指定Key对应的值。
clear():清空所有数据。
commit():当Editor编辑完成之后调用该方法修改。

SharedPreference 获取实例的方法

1:调用Context对象的getSharedPreferences()方法
2: 调用Activity对象的getPreferences()方法

两种方式的区别:

 调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
 调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.

SharedPreferences的四种操作模式:

Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件,在Android 4.2开始不推荐使用这两种模式,因为容易导致安全漏洞。.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
使用demo:

//读取设置信息,根据设置信息来进行相关逻辑操作
SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);// config为sp名,而autoupdate为sp中存的值的名字
        if (sp.getBoolean("autoupdate", false)) {
            checkVersion();
        } else {
            IntentUtils.startActivityForDelayAndFinish(SplashActivity.this,
                    HomeActivity.class, DELAY_TIME);
        }
//写入设置信息
//scv是一个带有单选框的一个自定义组件。
public void onClick(View v) {
                Editor edit=sp.edit();//获得Editor对象
                if(scv.isChecked()){//如果单选框是选中状态
                    scv.setChecked(false);//再次点击,取消选中
                    edit.putBoolean("autoupdate", false);//将值保存到ShredPreferences中
                }else{
                    scv.setChecked(true);
                    edit.putBoolean("autoupdate", true);

                }
                edit.commit();//提交
            }

以上为个人总结知识点,如有错,欢迎各位大牛批评指正,给予指导。

你可能感兴趣的:(Android)