10.Android-SharedPreferences使用

1.SharedPreferences介绍java

SharedPreferences,它是一个轻量级的配置文件类,用于保存软件配置参数. 采用xml文件形式存储在/data/data/包名/shared_prefs/this

优势在于:spa

  • 轻量级,以键值对的方式进行存储,使用方便,易于理解
  • 程序卸载后会也会一并被清除,不会残留信息

缺点在于:code

  • 不支持跨多个进程使用
  • 键值数据若是过多,会致使界面卡顿


2.如何获取SharedPreferencesxml

2.1 经过Context .getSharedPreferences()方法blog

public SharedPreferences getSharedPreferences(String name, int mode);
//name:指定文件名称
//mode: 能够填入MODE_PRIVATE(文件只能由调用应用程序访问)、
//MODE_APPEND(追加内容模式)、MODE_WORLD_READABLE(文件支持全部人可读)、MODE_WORLD_WRITEABLE(文件支持全部人可写)

 

2.2 经过Activity 类中的 getPreferences()方法进程

public SharedPreferences getPreferences(int mode);
//mode: 能够填入MODE_PRIVATE(文件只能由调用应用程序访问)、MODE_APPEND(追加内容模式)、MODE_WORLD_READABLE(文件支持全部人可读)、MODE_WORLD_WRITEABLE(文件支持全部人可写)
//生成的配置文件名字会默认将当前活动的类名做为文件名.好比在MainActivity类下使用的,则会生成MAinActivity.xml

 

2.3 经过PreferenceManager中的静态public getDefaultSharedPreferences()方法get

public static SharedPreferences getDefaultSharedPreferences(Context context);
//mode会自动设置为MODE_PRIVATE(文件只能由调用应用程序访问)
//生成的配置文件名字会默认将包名做为文件名.

 

PS:后面示例会演示。it

 

3.如何经过SharedPreferences来读写配置参数io

经过下面方法来进行读操做:

 

上面的第二个参数defValue:表示默认值,若是key值未找到,则将defValue默认值返回过来

 

经过Editor edit()成员方法来获取Editor类来实现写操做,以下所示:

 

Editor类下的经常使用方法有:

Editor putInt(String key, int value); //向key键里写入int类型的值
Editor putString(String key, String value);   //向key键里写入String类型的值
Editor putStringSet(String key, Set<String> values);    //向key键里写入Set类型的值
boolean commit();          //提交数据,写入io

 

4.使用3种方法生成SharedPreferences配置文件示例

写MainActivity.java的onCreate():

public class MainActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SharedPreferences sp1 = MainActivity.this.getSharedPreferences("info1", MODE_PRIVATE);
        //写入数据
        Editor edit1 = sp1.edit();
        edit1.putString("name", "test1");
        edit1.commit();                
        //读取数据
        Log.v("MainActivity","sp1: "+sp1.getString("name", ""));

        SharedPreferences sp2 = MainActivity.this.getPreferences(MODE_PRIVATE);
        //写入数据
        Editor edit2 = sp2.edit();
        edit2.putString("name", "test2");
        edit2.commit();
        //读取数据
        Log.v("MainActivity","sp2: "+sp1.getString("name", ""));

        SharedPreferences sp3 = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
        //写入数据
        Editor edit3 = sp3.edit();
        edit3.putString("name", "test3");
        edit3.commit();
        //读取数据
        Log.v("MainActivity","sp3: "+sp1.getString("name", ""));
}

运行后,能够看到在data/data/com.example.sdreadWrite/shared_prefs下自动生成了3个xml文件:

 

  • info1.xml: 经过MainActivity.this.getSharedPreferences("info1", MODE_PRIVATE);实现的
  • MainActivity.xml: 经过MainActivity.this.getPreferences(MODE_PRIVATE);实现的
  • com.example.sdreadWrite_preferences.xml: 经过PreferenceManager.getDefaultSharedPreferences(MainActivity.this);实现的

打开info1.xml试试:

 

打开log打印(能够看到读出来的内容和XML配置同样):

相关文章
相关标签/搜索