zoukankan      html  css  js  c++  java
  • Android 的数据存储——SharePreferences

    SharedPreferences的使用

      有些时候,应用程序有少量的数据需要保存,而且这些数据的格式很简单:都是普通的字符串、标量类型的值等,比如应用程序的各种配置信息(如是否打开音效、是否使用振动效果等)、小游戏的玩家积分(如扫雷英雄榜之类的)等,对于这种数据,Android提供了SharedPreferences进行保存。

    SharedPreferences与Editor简介

      SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此它保存的数据主要是简单类型的key-value对。

      SharedPreferences接口主要负责读取应用程序的Preferences数据,它提供了如下常用方法访问SharedPreferences中的key-value对。

    • boolean contains(String key):判断SharedPreferences是否包含特定key的数据。
    • abstract Map<String,?> getAll():获取SharedPreferences数据里全部的key-value对。
    • boolean getXxx(String key,xxx defaultValue):获取SharedPreferences数据里指定key对应的value。如果该key不存在,返回默认值defaultValue。其中xxx可以是boolean、float、int、long、String等各种基本类型的值。

      SharedPreferences接口本身并没有提供写入数据的能力,而是通过SharedPreferences的内部接口,SharedPreferences调用edit()方法即可获取它所对应的Editor对象。Editor提供了如下方法来向SharedPreferences写入数据。

    • SharedPreferences.Editor clear():清空SharedPreferences里的所有数据。
    • SharedPreferences.Editor putXxx(String key,xxx value):向SharedPreferences存入指定key对应的数据。其中xxx可以是boolean、float、int、long、String等各种基本类型的值。
    • SharedPreferences.Editor remove(String key):删除SharePreferences里指定key对应的数据项。
    • boolean commit():当Editor编辑完成后,调用该方法提交修改。

      SharedPreferences 本身是一个接口,程序无法直接创建SharedPreference实例,只能通过Context提供的getSharedPreferences(String name,int mode)方法来获取SharedPrefereces实例,该方法的第二个参数(mode)支持如下几个值。

    • Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写。
    • Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写。
    • Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读、写。

    实例

     实例向SharedPreferences中写入、读取数据,该程序的界面很简单,它只是提供两个按钮,其中一个写数据,另一个用于读取数据。布局文件比较简单,就不贴出来了。

    public class SharePreferencesActivity extends Activity {
        
        SharedPreferences preferences;
        SharedPreferences.Editor editor;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_share_preferences);
            
            //获取只能被本应用程序读、写的SharedPreferences对象
            preferences=getSharedPreferences("crazyit", MODE_PRIVATE);
            editor=preferences.edit();
            Button read=(Button)findViewById(R.id.read);
            Button write=(Button)findViewById(R.id.write);
            
            read.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // 读取字符串数据
                    String time=preferences.getString("time", null);
                    //读取int类型的数据
                    int randNum=preferences.getInt("random", 0);
                    
                    String result=time==null?"你暂时还未写入数据":"写入时间为: "
                                +time+"
    上次生成的随机数为: "+randNum;
                    //使用Toast提示信息
                    Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
                    
                }
            });
            
            write.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    SimpleDateFormat adf=new SimpleDateFormat("yyyy年MM月dd月 "
                                                    +"hh:mm:ss");
                    //存入当前时间
                    editor.putString("time", adf.format(new Date()));
                    
                    editor.putInt("random", (int)(Math.random()*100));
                    //提交所有存入的数据
                    editor.commit();
                    
                }
            });
            
            
        }
    
    }

    在/data/data/com.hutao.sharedpreference/shared_prefs/有一个crazyit.xml文件。打开该XML文档可以看到文件内容:

    <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    <map>
    <int name="random" value="30" />
    <string name="time">2014年11月03月 03:29:23</string>
    </map>

    参考资料:

      《Android 疯狂讲义》

     

  • 相关阅读:
    Hexo yilia 主题启用及相关设置
    Hexo Next 主题启用及相关设置
    值得一用的 Windows 软件清单
    ES6新特性2
    ES6新特性1
    手写promise第三天
    手写promise第一天
    Generator异步函数
    函子Functor
    柯里化函数组合的学习
  • 原文地址:https://www.cnblogs.com/chuji1988/p/4071225.html
Copyright © 2011-2022 走看看