轻量数据存储-----SharedPreferences

Android 五种数据存储的方式

  1. SharedPreferences:以Map形式存放简单的配置参数;
  2. ContentProvider:将应用的私有数据提供给其他应用使用;
  3. 文件存储:以IO流形式存放,可分为手机内部和手机外部(sd卡等)存储,可存放较大数据;
  4. SQLite:轻量级、跨平台数据库,将所有数据都是存放在手机上的单一文件内,占用内存小;
  5. 网络存储 :数据存储在服务器上,通过连接网络获取数据;

Sharedpreferences是Android平台上一个轻量级的存储类,用来保存应用程序的各种配置信息,其本质是一个以“键-值”对的方式保存数据的xml文件,其文件保存在/data/data//shared_prefs目录下。

获取SharedPreferences

要想使用 SharedPreferences 来存储数据,首先需要获取到 SharedPreferences 对象。Android中主要提供了三种方法用于得到 SharedPreferences 对象。

Context类中的getSharedPreferences()方法:

此方法会接收两个参数:

  • 第一个参数:指定SharedPreferences文件的名称,如果指定的文件不存在则会创建一个
  • 第二个参数:指定操作模式

模式选择:

  • Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写;(是默认的操作模式和直接传入0效果是相同)
  • Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但是不能写;
  • Context.MOED_WORLD_WRITEABLE:指定该该SharedPreferences数据能被其他应用程序读;(这两种被弃用)
  • Context.MODE_APPEND:该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件;

Activity类中的getPreferences()方法:

这个方法和 Context 中的 getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名。

PreferenceManager类中的getDefaultSharedPreferences()方法:

这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences 文件。

SharedPreferences的使用

SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象的实现。使用Perferences来存储数据,用到了SharedPreferences接口和SharedPreferences的一个内部接口SharedPreferences.Editor,这两个接口在android.content包中:

1) 写入数据
    //步骤一:创建一个SharedPreferences对象
    SharedPreferences sharedPreferences = getSharedPreferences("data",Context.MODE_PRIVATE);
    //步骤二:实例化SharedPreferences.Editor对象
    SharedPreferences.Editor editor = sharedPreferences.edit();
    //步骤三:将获取过来的值放入文件
    editor。putString("name","Tom");
    editor.putInt("age",28);
    editor.putBoolean("marrid",false);
    //步骤四:提交
    editor.commmit();
    
2)读取数据:
    SharedPreferences sharedPreferences = getSharedPreferences("data",Context.MODE_PRIVATE);
    String userId = sharedPreferences.getString("name","");
    
3)删除指定数据
    editor.remove("name");
    ediotor.commit();
    
4)清空数据
    editor.clear();
    editor.commit();

提交数据的时候用apply()会更好 commit()会立即将其数据写入
注意:如果在 Fragment 中使用SharedPreferences 时,需要放在onAttach(Activity activity)里面进行SharedPreferences的初始化,否则会报空指针 即 getActivity()会可能返回null !

工具类SharedPreferences

SharedPreferencesUtil](https://blog.csdn.net/a512337862/article/details/73633420)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容