前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10.Android-SharedPreferences使用

10.Android-SharedPreferences使用

作者头像
诺谦
发布2020-02-12 23:39:40
8740
发布2020-02-12 23:39:40
举报
文章被收录于专栏:Linux驱动Linux驱动

1.SharedPreferences介绍

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

优点在于:

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

缺点在于:

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

2.如何获取SharedPreferences

2.1 通过Context .getSharedPreferences()方法

代码语言:javascript
复制
public SharedPreferences getSharedPreferences(String name, int mode);
//name:指定文件名称
//mode: 可以填入MODE_PRIVATE(文件只能由调用应用程序访问)、
//MODE_APPEND(追加内容模式)、MODE_WORLD_READABLE(文件支持所有人可读)、MODE_WORLD_WRITEABLE(文件支持所有人可写)

2.2 通过Activity 类中的 getPreferences()方法

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

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

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

PS:后面示例会演示。

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

通过下面方法来进行读操作:

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

通过Editor edit()成员方法来获取Editor类来实现写操作,如下所示:

Editor类下的常用方法有:

代码语言:javascript
复制
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():

代码语言:javascript
复制
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配置一样):

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档