关闭

Android数据的四种存储方式一 —— SharedPreference

1784人阅读 评论(0) 收藏 举报
分类:
SharedPreference
SharedPreference是一种轻型的数据存储方式,实际上是基于XML文件存储的“key-value”键值对数据。通常用来存储程序的一些配置信息。其存储在“data/data/程序包名/shared_prefs目录下。
SharedPreference本身只能获取数据,不支持存储和修改。存储和修改要通过Editor对象来实现。
 
修改和存储数据
  • 根据Context的getSharedPrerences(key, [模式])方法获取SharedPreference对象;
  • 利用SharedPreference的editor()方法获取Editor对象;
  • 通过Editor的putXXX()方法,将键值对存储数据;
  • 通过Editor的commit()方法将数据提交到SharedPreference内。
 //设置单例里面的数值,然后再将数值写入到SharedPreference里
private String setCityName(String _cityName){
        City.getCity().setCityName(_cityName);

        Context ctx =MainActivity.this;
        SharedPreferences sp =ctx.getSharedPreferences("CITY", MODE_PRIVATE);
        Editor editor=sp.edit();
        editor.putString("CityName", City.getCity().getCityName());
        editor.commit();

        return City.getCity().getCityName();
    } 
获取数据
  • 同样根据Context对象获取SharedPreference对象;
  • 直接使用SharedPreference的getXXX(key)方法获取数据。
//从单例里面找,如果不存在则在SharedPreferences里面读取
private String getCityName(){
        String cityName = City.getCity().getCityName();
        if(cityName==null ||cityName==""){
            Context ctx =MainActivity.this;
            SharedPreferences sp =ctx.getSharedPreferences("CITY", MODE_PRIVATE);
            City.getCity().setCityName(sp.getString("CityName", "广州"));
        }
        return City.getCity().getCityName();
    }

 注意

  • getSharedPrerences(key, [模式])方法中,第一个参数其实对应到XML的文件名,相同key的数据会保存到同一个文件下。
  • 使用SharedPreference的getXXX(key)方法获取数据的时候,如果key不存在的活,不会出现报错,会返回none。建议使用getXXX()的时候指定默认值。
  • apply,commit这两个方法的区别在于: 
    1. apply没有返回值而commit返回boolean表明修改是否提交成功 
    2. apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在处理的commit保存到磁盘后在操作,从而降低了效率。而apply只是原子的提交到内容,后面有调用apply的函数的将会直接覆盖前面的内存数据,这样从一定程度上提高了很多效率。 
    3. apply方法不会提示任何失败的提示。
MySharedPrerences.java
package com.anxpp.phyg.utils;
import android.content.Context;
import android.content.SharedPreferences;
/**
 * Created by anxpp on 2015/10/29.
 *
 */
public class MySharedPrerences {
    /**
     * 存储或修改值
     * @param context   上下文
     * @param flag      存储标志
     * @param valueName 存储字段名
     * @param value     要保存的值
     */
    public static void save(Context context,String flag,String valueName,String value){
        SharedPreferences sp =context.getSharedPreferences(flag, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor=sp.edit();
        editor.putString(valueName, value);
        editor.apply();
    }
    /**
     * 获取值
     * @param context   上下文
     * @param flag      存储标志
     * @param valueName 要获取的字段名
     * @return          要获取的值
     //@param default   默认值
     */
    public static String getString(Context context,String flag,String valueName){
        SharedPreferences sp =context.getSharedPreferences(flag, Context.MODE_PRIVATE);
        return sp.getString(valueName, "");
    }
    public static String getString(Context context,String flag,String valueName,String defaultStr){
        SharedPreferences sp =context.getSharedPreferences(flag, Context.MODE_PRIVATE);
        return sp.getString(valueName, defaultStr);
    }
    public static int getInt(Context context,String flag,String valueName){
        SharedPreferences sp =context.getSharedPreferences(flag, Context.MODE_PRIVATE);
        return sp.getInt(valueName, 0);
    }
    public static int getInt(Context context,String flag,String valueName,int defaultInt){
        SharedPreferences sp =context.getSharedPreferences(flag, Context.MODE_PRIVATE);
        return sp.getInt(valueName, defaultInt);
    }
}
1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

SharedPreferences数据的两种保存方法: apply、commit

(转载)http://tanqi0508.blog.163.com/blog/static/1883557772012111104326404/ SharedPreferences的基本概念...
  • u010746364
  • u010746364
  • 2016-06-21 14:58
  • 3580

SharedPreference为什么不适合存储大量数据

转自:http://www.cnblogs.com/mingfeng002/p/5970221.html SharedPreference是Android上一种非常易用的轻量级存储方式,由于其API...
  • u010335298
  • u010335298
  • 2017-06-06 16:25
  • 1788

Android四种存储方式 sharedpreference,file,SQlite,contentprovider

  • 2011-12-25 11:17
  • 52KB
  • 下载

Android四种存储方式 sharedpreference,file,SQlite,contentprovider实现增删改查

Android四种存储方式: sharedpreference,file,SQlite,contentprovider。 1、SharedPreferences是一种轻型的数据存储方式,它的本质是基...
  • rhljiayou
  • rhljiayou
  • 2011-12-25 11:20
  • 7353

Android的5种数据存储方式之sharedpreference

SharedPreference 存储数据
  • yxrs0309
  • yxrs0309
  • 2015-10-09 23:02
  • 809

android数据存储之文件方式和SharedPreference

一、文件方式 1、保存数据进内
  • duncan891101
  • duncan891101
  • 2014-06-15 10:25
  • 465

Android数据的四种存储方式(三) —— SharePreferences

除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data...
  • dlwh_123
  • dlwh_123
  • 2014-06-03 17:26
  • 393

Android数据的四种存储方式(四) —— ContentProvider

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider
  • dlwh_123
  • dlwh_123
  • 2014-06-03 17:27
  • 336

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (四) —— ContentProvider

ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制。一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制。并且此种方式忽略了底层的数据存储实现,Cont...
  • actual_
  • actual_
  • 2012-02-01 13:04
  • 434

Android 数据存储——SharedPreference

作为一个完成的应用程序,数据存储操作是必不可少的,因此,Android系统提供了四种数据储存方式,分别是:SharedPreference、File、SQLite以及Content Provider。...
  • Thanksgining
  • Thanksgining
  • 2015-02-04 12:43
  • 1228
    个人资料
    • 访问:747914次
    • 积分:5460
    • 等级:
    • 排名:第5713名
    • 原创:96篇
    • 转载:1篇
    • 译文:0篇
    • 评论:291条
    博客专栏
    其他信息