zoukankan      html  css  js  c++  java
  • SharedPreferences 详细介绍

      今天看到《技术小黑屋》写的一篇名为 “为什么程序员应该尝试写一写博客?”,对我影响蛮大的,反思一下,以前确实没有认真思考过,虽然以前也写过一些博客,但都是看资料然后写的,原创度很低,所以要从现在开始,我要开始好好维护一下自己的博客啦!

      数据保存通用的有五种方法,参看  http://www.cnblogs.com/dubo-/p/5597306.html

      这里着重介绍一下 SharedPreferences 的实现原理。SharedPreferences 是一个轻量级的存储工具,存储的数据很少,而且数据类型很单一,保存基于XML文件存储的key-value键值对数据,SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现,但是 他有一个优点就是使用比较方便易懂。用过 SharedPreferences 的童鞋应该知道,它不是直接new 出来的,那就说明它不是一个类,其实它是一个接口,我们只能通过 Contex(Activity).getSharedPreferences(String name, int mode) 的方式来得到他的实例。那么这里Context 和 Activity 有什么区别?如下:

      调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享
      调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用,其实这个就是Activity和Context的区别。

      Contex(Activity).getSharedPreferences(String name, int mode) 的两个参数分别表示 文件名、存储模式,存储模式一共有4种:

      MODE_PRIVATE :只能是建立文件的程序可以访问

         MODE_WORLD_READABLE :所有程序都可以访问文件但是不能更改

         MODE_WORLD_WRITEABLE :所有程序都可以改变文件的内容

         MODE_APPEND :检查文件,文件存在则在文件的末尾添加,不存在则建立文件并在里面添加内

      以上大家都了解了什么是 SharedPreferences ,接下来要说的就是 保存数据的时候,提供了同步的commit和异步的apply来保存数据,那么为什么要提供两种呢?

      区别:(1)commit 是直接将数据存到硬盘中的,而 apply 是将数据传到内存中,继而异步到磁盘中,如果有多个commit 并发提交数据的时候,只能排队一次提交,这样大大降低了效率;

          (2)commit 会返回信息,但是 apply 不会给出任何提示信息,就算保存失败也不会提示。



    保存基于XML文件存储的key-value键值对数据

  • 相关阅读:
    JavaScript的continue、break和return的区别
    JavaScript的函数和作用域闭包
    利用反射快速给Model实体赋值
    C# 多态的实现
    C# 去除字符串首尾字符或字符串
    C#中大List的内存分配
    C#实现对图片文件的压缩、裁剪操作实例
    StringBuilder String string.Concat 字符串拼接速度
    C# 事件浅析
    理解 Thread.Sleep 函数
  • 原文地址:https://www.cnblogs.com/tyzl/p/6555391.html
Copyright © 2011-2022 走看看