zoukankan      html  css  js  c++  java
  • Android数据存储(1):SharedPreferences

      Android系统提供了5种方式用来存储应用数据(application data),它们分别是SharedPreferences(共享参数),Internal Storage(内部存储),External Storage(外部存储),SQLite Databases(数据库存储),Network Connection(网络存储),可以根据不同的情景使用相应的存储方式。

      下图是从Android 5.0 官方文档的Data Storage的部分截图:

        

      从上图可知SharedPreferences主要以键值对的形式存储私有数据Internam Storage主要是在手机的内存存储私有数据External Storage主要是在手机的扩展卡(SD卡、存储卡)存储公共数据,而SQLite Databases则是将具有数据结构的数据存储到私有的数据库中,同时NetWork Connection则是存储数据到自己的服务器上。

      

      SharedPreferences 又名共享参数,它是一个轻量级的存储类,适用于存储少量的软件配置参数信息,它是以XML文件的形式存储数据,其中该文件保存在/data/data/包名/shared_pref目录下。

      查阅官方文档,知ShredPreferences:

      

      根据以上可知 SharedPreferences是一个接口,它是使用单例模式创建对象,也就是在任何时刻,在内存中都只有一个SharedPreferences对象。

      SharedPreferences是一个接口,它的内部定义了两个公共的内部接口:

      

        

      SharedPreferences定义的方法:

      

      SharedPreferences类的整体定义:

      

      根据以上总结:

      1.获取SharedPreferences对象:

        1)context.getSharedPreferences(String name,int mode)  返回一个SharedPreferences对象,可以被同一应用程序下的其他组件共享

         eg:  SharedPreferences sp = getSharedPreferences("shared_pref",MODE_PRIVATE);

         name 为SharedPreferences保存的数据所在的文件名称,没有后缀,而Mode为存储的模式,主要有四种:

         

         可知Mode的值有四个(API 17),分别为:

          MODE_PRIVATE:私有

          MODE_APPED:追加

          MODE_ENABLE_WRITE_AHEAD_LOGGING:

          MODE_MULTI_PROCESS:

          其中MODE_WORLD_READABLE(全局读)和MODE_WORLD_WRITEABLE(全局写)已经过时了。

        2)activity.getPreferences(int mode)  返回一个SharedPreferences对象,获得的对象只能在该activity中使用,其中保存的数据的文件名自动命名为该activity的name,例如MainActivity.xml

          

      2.从SharedPreferences中保存数据和取数据。

        其中取数据可以直接使用sharedPreferences对象的getXXX()方法,如getInt(),getLong(),getString()等,参数为键值对的键.

        保存数据则是先获取SharedPreferences的内部类Editor对象,这是一个编辑对象,然后使用 putXXX()方法,如putInt(),putLong(),putString()等,参数分别为键值对的键和值,最后需要注意的是数据必须使用commit()或apply方法,才能成功保存。

      eg:

        SharedPreferences sp = getSharedPreferences("shared_pref",MODE_PRIVATE);

        SharedPreferences.Editor editor = sp.editor();

        editor.putString("name","Tom");

        editor.putInt("age",13);

        editor.commit();

        ----------------------------------------------------------------------------------------

        String name = sp.getString("name",null);

        int age = sp.getInt("age",-1);

      未完,待续。

  • 相关阅读:
    何时使用泛型集合
    利用C#在Word自动化中操作OLE控件
    “A first chance exception of type…” Messages in VS 2005
    What is the "Could not find resource assembly" error message?
    输出PDF文档到ASP.NET页面
    Top 5 SerialPort Tips
    黑莓BlackBerry之Helloworld
    今天参加广州.NET俱乐部活动,运气超好
    全面解析EMAIL编码
    用DataView类操控数据
  • 原文地址:https://www.cnblogs.com/enjoy-coding/p/4892963.html
Copyright © 2011-2022 走看看