zoukankan      html  css  js  c++  java
  • Android开发_SharedPreferences

    SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android123提示最 终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。

     

    这种方式应该是用起来最简单的Android读写外部数据的方法了。他的用法基本上和 J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单、 透明的方式来保存一些用户个性化设置的字体、颜色、位置等参数信息。一般的应用程序都会提供“设置”或者“首选项”的这样的界面,那么这些设置最后就可以 通过Preferences来保存,而程序员不需要知道它到底以什么形式保存的,保存在了什么地方。当然,如果你愿意保存其他的东西,也没有什么限制。只 是在性能上不知道会有什么问题。

    在Android系统中,这些信息以XML文件的形式保存在 /data/data/PACKAGE_NAME /shared_prefs 目录下。



     

    SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据。SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。

     
        使用SharedPreferences保存key-value对的步骤如下:

    (1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。

     

    public SharePreferenceUtil(Context context, String file) {
    		sp = context.getSharedPreferences(file, Context.MODE_PRIVATE);
    		editor = sp.edit();
    	}
    


    (2)使用SharedPreferences接口的edit获得SharedPreferences.Edi
    tor对象。

     

    private SharedPreferences.Editor editor;
    


    (3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。

    (4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。

     

    // channel_id
    	public void setChannelId(String ChannelId) {
    		editor.putString("ChannelId", ChannelId);
    		editor.commit();
    	}

    具体代码的书写流程为:

     

    A、存放数据信息

    1、打开Preferences,名称为setting,如果存在则打开它,否则创建新的Preferences

    SharedPreferences settings = getSharedPreferences(“setting”, 0);

    2、让setting处于编辑状态

    SharedPreferences.Editor editor = settings.edit();

    3、存放数据

    editor.putString(“name”,”ATAAW”);
    editor.putString(“URL”,”ATAAW.COM”);

    4、完成提交

    editor.commit();

    B、读取数据信息

    1、获取Preferences

    SharedPreferences settings = getSharedPreferences(“setting”, 0);

    2、取出数据

    String name = settings.getString(“name”,”默认值”);
    String url = setting.getString(“URL”,”default”);

    以上就是Android中SharedPreferences的使用方法,其中创建的Preferences文件存放位置可以在Eclipse中查看:

    DDMS->File Explorer /<package name>/shared_prefs/setting.xml

     

    主要代码 具体如下(仅供参考):

    在onCreate方法中调用restorePrefs()方法:

     

    //读取     功能的实现
        private void restorePrefs() {
      // TODO Auto-generated method stub
         //SharedPreferences是一种轻量级的数据存储方式.是以键值对来存储应用程序的
           //配置信息的一种方式,它只能存储基本数据类型。
         //声明一个优先级设置 类型 settings,载入配置文件


      SharedPreferences settings = getPreferences(BMI.MODE_PRIVATE);

      //使用getXXX函数从优先级设置读取不同类型的内容 得到优先级设置参数的内容


      String pref_height = settings.getString(PREF_HEIGHT, "");

      //此一句为唤醒记忆语句


       field_height.setText(pref_height);
       field_weight.requestFocus();//设置焦点字段 到“体重”字段上 用户只需直接输入体重数字就可以了

     }
       
        //存储    在Activity每次变暗,也就是离开当前屏幕时,记住设置的身高值     即 存储优先级设置
        protected void onPause()
        {
         super.onPause();
         Log.v("BMI", "onPause1");
         //获得SharedPreferences对象


         SharedPreferences settings = getPreferences(BMI.MODE_PRIVATE);


         //获得SharedPreferences.Editor


         SharedPreferences.Editor editor = settings.edit();


         //保存组件的值   为优先级设置填写不同类型的内容
         //用"field_height"界面组件标识符来取得身高的字符串 然后保存到PREF_HEIGHT所代表的优先级设置参数中


         editor.putString(PREF_HEIGHT, field_height.getText().toString());


         //提交保存的结果   将改变写到系统中


         editor.commit();
        }

  • 相关阅读:
    ArcGlobe组件开发之动画4——加载保存动画
    ArcGlobe组件开发之3D符号化——接口篇
    ArcEngine 3D开发之3D符号化——接口篇
    ArcEngine 3D开发之IGlobeDisplayRendering2 接口
    ArcGlobe组件开发之IGlobeDisplayRendering2 接口
    oracle 11g各种下载地址
    redis memcached 和 mongoDb三者优缺点
    高并发 有哪些解决方案
    秒杀活动的高并发问题和超卖问题的解决方案
    php的运行原理,cgi和fast-cgi, php-cgi和php-fpm之间的联系区别
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3293919.html
Copyright © 2011-2022 走看看