关于SharedPreferences的使用!

  今天在开发应用的时候遇到个问题:如何保存应用的进度,或者说如何关闭前一个Activity后保持其原来的状态。这时候需要用的是SharedPreferences,轻量级的数据存储方式。

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

  一、根据Context获取SharedPreferences对象

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

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

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

  首先先写俩工具类:

/**
     * 对SharedPreferences初始化
     * 写入默认值
     */
    private void init(){
        // 初始化SharedPreferences
        sp = getSharedPreferences("CameraDemo", MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE);
        spe = sp.edit();
        // 写入默认选项
        spe.putString("KeyCode", items[0]);
        spe.putInt("LastCode", Last_code);
        // 提交
        spe.commit();
    }
    /**
     * 写入传来的字符串
     * @param path 传入的字符串
     */
    private void writePreferencess(String path,int code){
        SharedPreferences sps = getSharedPreferences("CameraDemo", MODE_PRIVATE);
        spe = sps.edit();
        // 写入默认选项
        spe.putString("KeyCode", path);
        spe.putInt("LastCode", code);
        // 提交
        spe.commit();
    }
    /**
     * 读取相应的String数据
     * @return 存储的条目
     */
    private String readPreferencesString(){
        SharedPreferences sps = getSharedPreferences("CameraDemo", MODE_PRIVATE);
        String itemString = sps.getString("KeyCode", items[0]);
        return itemString;
    }
    /**
     * 读取相应的int数据
     * @return 存储的条目
     */
    private int readPreferencesInt(){
        SharedPreferences sps = getSharedPreferences("CameraDemo", MODE_PRIVATE);
        int itemInt = sps.getInt("LastCode", 0);
        return itemInt;
    }

  这里我创建的SharedPreferences包括两个变量,一个是String类型,另一个是int类型,分别代表选项的名称和标识数字,

   接下来在onCreate中:

   File f = new File("/data/data/com.example.camerademo/shared_prefs/CameraDemo.xml");
        // 判断文件是否存在
        if(!f.exists()){
            Log.d(TAG, "正在创建SharedPreferences。。。。");
            init();
            text_view.setText("当前默认状态为:\n" +keyString
                    + "\n 若需要改变状态,请点击设置!");
        } else {
            Log.d(TAG, "获取相应的内容:keyString+Last_code");
            keyString = readPreferencesString();
            Last_code = readPreferencesInt();
            Log.d(TAG, keyString+"");
            Log.d(TAG, Last_code+"");
            text_view.setText("当前默认状态为:\n" +keyString
                    + "\n 若需要改变状态,请点击设置!");
        }

  在选项的方法中,调用写入的方法:

    writePreferencess(keyString,isSelected);得到自己需要的状态。

 好了,就这么多。下面附上参考链接:

  http://blog.csdn.net/jiahui524/article/details/6971662

  http://blog.csdn.net/cycwind/article/details/6906611

  http://blog.sina.com.cn/s/blog_4f1c99de0101hur1.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值