Android数据存储(1):SharedPreferences

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

 

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

  Android数据存储(1):SharedPreferences_第1张图片  

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

  

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

  查阅官方文档,知ShredPreferences:

  Android数据存储(1):SharedPreferences_第2张图片

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

 

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

  

    

  SharedPreferences定义的方法:

  

 

  SharedPreferences类的整体定义:

  Android数据存储(1):SharedPreferences_第3张图片

 

  根据以上总结:

  1.获取SharedPreferences对象:

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

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

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

     Android数据存储(1):SharedPreferences_第4张图片

     可知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

      Android数据存储(1):SharedPreferences_第5张图片

  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);

 

  未完,待续。

你可能感兴趣的:(Android数据存储(1):SharedPreferences)