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键值对数据

  • 相关阅读:
    关于设置日期的代码
    图片拉伸方法以及修改图片渲染模式以及如何把一个控制器包装成一个导航控制器
    统一设置导航栏与状态栏代码
    CALayer加阴影后动画卡的处理办法
    Mac下显示隐藏所有文件
    删除当前目录下的所有.svn
    基础知识
    sql 学习5
    c#多线程学习
    xml序列化
  • 原文地址:https://www.cnblogs.com/tyzl/p/6555391.html
Copyright © 2011-2022 走看看