`
guochongcan
  • 浏览: 326742 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SharePreference类似于JavaEE中的session

 
阅读更多

SharedPreference主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成。 类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问。
例子:
工程1:

Java代码 复制代码 收藏代码
  1. SharedPreferences shp=getSharedPreferences(SharePreference_name, Context.MODE_WORLD_READABLE);   
  2.         SharedPreferences.Editor editor = shp.edit();   
  3.         editor.putInt("storedInt"100); // value to store   
  4.         editor.commit();  
SharedPreferences shp=getSharedPreferences(SharePreference_name, Context.MODE_WORLD_READABLE);
        SharedPreferences.Editor editor = shp.edit();
        editor.putInt("storedInt", 100); // value to store
        editor.commit();



工程2:

Java代码 复制代码 收藏代码
  1. Context mOtherContex;   
  2.         int storedPreference;   
  3.         try {   
  4.             mOtherContex = this.createPackageContext("com.android.testsharepreference", Context.CONTEXT_IGNORE_SECURITY);   
  5.                SharedPreferences preferences = mOtherContex.getSharedPreferences(SharePreference_name,MODE_WORLD_READABLE);   
  6.                storedPreference = preferences.getInt("storedInt"0);   
  7.                    
  8.         } catch (NameNotFoundException e) {   
  9.             // TODO Auto-generated catch block   
  10.             e.printStackTrace();   
  11.             storedPreference=200;   
  12.         }  
Context mOtherContex;
        int storedPreference;
		try {
			mOtherContex = this.createPackageContext("com.android.testsharepreference", Context.CONTEXT_IGNORE_SECURITY);
			   SharedPreferences preferences = mOtherContex.getSharedPreferences(SharePreference_name,MODE_WORLD_READABLE);
			   storedPreference = preferences.getInt("storedInt", 0);
		    	
		} catch (NameNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			storedPreference=200;
		}



解说:工程1创建getSharedPreferences(SharePreference_name, Context.MODE_WORLD_READABLE);第二个参数就可以决定你的SharePreference要不要共享,有三种模式:MODE_PRIVATE ,MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE;工程2 getSharedPreferences是通过工程1的Context来获得工程1的SharedPreference的实例。

 

 

========================================================

 

 

 

 

Java代码 复制代码 收藏代码
  1. <SPAN style="FONT-SIZE: medium">SharedPreferences    getPreferences(int mode)  通过Activity可以返回一个SharedPrefenences的实</SPAN>例  
SharedPreferences  	 getPreferences(int mode)  通过Activity可以返回一个SharedPrefenences的实

 

Java代码 复制代码 收藏代码
  1. <SPAN style="FONT-SIZE: medium">在Context下有这个方法  根据文件名称和mode来实例化SharedPreferences对象   
  2. abstract SharedPreferences   
  3.     getSharedPreferences(String name, int mode)   
  4. Retrieve and hold the contents of the preferences file 'name', returning a SharedPreferences through which you can retrieve and modify its values.   
  5. </SPAN>  
在Context下有这个方法  根据文件名称和mode来实例化SharedPreferences对象
abstract SharedPreferences
	getSharedPreferences(String name, int mode)
Retrieve and hold the contents of the preferences file 'name', returning a SharedPreferences through which you can retrieve and modify its values.
  
  因为Activity继承于Context,则在Activity都可以通过以上两种方法来实例化SharedPreferences对象


得到了SharedPreferences对象,就可以使用下面的方法。

Java代码 复制代码 收藏代码
  1. <SPAN style="FONT-SIZE: small"><STRONG>public interface  
  2. SharedPreferences   
  3.   
  4. <!-- end header -->   
  5. android.content.SharedPreferences   
  6. Class Overview   
  7.   
  8. Interface for accessing and modifying preference data returned by getSharedPreferences(String, int) . For any particular set of preferences, there is a single instance of this class that all clients share. Modifications to the preferences must go through an SharedPreferences.Editor object to ensure the preference values remain in a consistent state and control when they are committed to storage.   
  9.   
  10. Note: currently this class does not support use across multiple processes. This will be added later.   
  11. See Also</STRONG></SPAN>   
  12.   
  13.  <SPAN style="FONT-SIZE: small">   * getSharedPreferences(String, int)   
  14.   
  15. SharedPreferences是一个接口,如果想添加和修改Preference data,就要通过getSharedPreferences(String,int)。在一个类里面实例化,就可以在其它地方共享这些数据。   
  16. 目前这个类不支持多进程使用。   
  17.   
  18.   
  19. <!-- jd-descr -->   
  20. Summary   
  21.   
  22. <!-- ======== NESTED CLASS SUMMARY ======== -->   
  23. </SPAN>   
  24. <SPAN style="FONT-SIZE: medium"><STRONG>Nested Classes   
  25.   
  26. 这两个接口是SharedPreferences的内部类   
  27. interface   SharedPreferences.Editor    SharedPreferences编辑器   
  28. interface   SharedPreferences.OnSharedPreferenceChangeListener   当数据改变的时候调用   
  29. <!-- ========== METHOD SUMMARY =========== -->   
  30. Public Methods   
  31. abstract boolean    contains (String key)   数据库里是否包含key的键值   
  32. abstract SharedPreferences.Editor   edit ()      通过这个方法返回一个SharedPrefenences.Editor实例化对象   
  33. abstract Map <String , ?>     getAll ()  返回所有的键值对,注意“?”,它代表你存储的数字类型,是泛型的用法   
  34. abstract boolean    getBoolean (String key, boolean defValue) 通过key从Preferences获取boolean类型的数据   
  35. abstract float  getFloat (String key, float defValue) 通过key从Preferences获取float类型的数据   
  36. abstract int    getInt (String key, int defValue) 通过key从Preferences获取int类型的数据   
  37. abstract long   getLong (String key, long defValue) 通过key从Preferences获取long类型的数据   
  38. abstract String     getString (String key, String defValue) 通过key从Preferences获取String类型的数据   
  39. abstract void   registerOnSharedPreferenceChangeListener (SharedPreferences.OnSharedPreferenceChangeListener listener)   
  40. 注册一个监听器。当preferences数据改变的时候调用这个监听器下的方法   
  41. abstract void   unregisterOnSharedPreferenceChangeListener (SharedPreferences.OnSharedPreferenceChangeListener listener)   
  42. 注册一个监听器。取消先前注册的回调方法。</STRONG></SPAN>   
  43.   
  44.   
  45.   
  46. <SPAN style="FONT-SIZE: medium">通过上面的editor() 方法就可以实例化SharedPreferences.Editor对象,接着就可以使用下面的一些方法进行存储。   
  47. </SPAN>   
  48.   
  49. <SPAN style="FONT-SIZE: medium"><STRONG>Public Methods   
  50. abstract SharedPreferences.Editor      
  51.   
  52.                                          
  53. abstract boolean    clear ()    删除所有值   
  54.   
  55. commit ()   提交你设置的值   
  56. abstract SharedPreferences.Editor   putBoolean (String key, boolean value)   设置boolean值存储   
  57. abstract SharedPreferences.Editor   putFloat (String key, float value)  设置浮点型数据存储   
  58. abstract SharedPreferences.Editor   putInt (String key, int value)  设置整形数据存储   
  59. abstract SharedPreferences.Editor   putLong (String key, long value) 设置长整型   
  60. abstract SharedPreferences.Editor   putString (String key, String value)  设置字符串数据存储   
  61. abstract SharedPreferences.Editor      
  62.   
  63. remove (String key)  删除一个</STRONG></SPAN>  
public interface
SharedPreferences

<!-- end header -->
android.content.SharedPreferences
Class Overview

Interface for accessing and modifying preference data returned by getSharedPreferences(String, int) . For any particular set of preferences, there is a single instance of this class that all clients share. Modifications to the preferences must go through an SharedPreferences.Editor object to ensure the preference values remain in a consistent state and control when they are committed to storage.

Note: currently this class does not support use across multiple processes. This will be added later.
See Also

    * getSharedPreferences(String, int)

SharedPreferences是一个接口,如果想添加和修改Preference data,就要通过getSharedPreferences(String,int)。在一个类里面实例化,就可以在其它地方共享这些数据。
目前这个类不支持多进程使用。


<!-- jd-descr -->
Summary

<!-- ======== NESTED CLASS SUMMARY ======== -->

Nested Classes

这两个接口是SharedPreferences的内部类
interface 	SharedPreferences.Editor 	SharedPreferences编辑器
interface 	SharedPreferences.OnSharedPreferenceChangeListener 	 当数据改变的时候调用
<!-- ========== METHOD SUMMARY =========== -->
Public Methods
abstract boolean 	contains (String key)   数据库里是否包含key的键值
abstract SharedPreferences.Editor 	edit ()      通过这个方法返回一个SharedPrefenences.Editor实例化对象
abstract Map <String , ?> 	getAll ()  返回所有的键值对,注意“?”,它代表你存储的数字类型,是泛型的用法
abstract boolean 	getBoolean (String key, boolean defValue) 通过key从Preferences获取boolean类型的数据
abstract float 	getFloat (String key, float defValue) 通过key从Preferences获取float类型的数据
abstract int 	getInt (String key, int defValue) 通过key从Preferences获取int类型的数据
abstract long 	getLong (String key, long defValue) 通过key从Preferences获取long类型的数据
abstract String 	getString (String key, String defValue) 通过key从Preferences获取String类型的数据
abstract void 	registerOnSharedPreferenceChangeListener (SharedPreferences.OnSharedPreferenceChangeListener listener)
注册一个监听器。当preferences数据改变的时候调用这个监听器下的方法
abstract void 	unregisterOnSharedPreferenceChangeListener (SharedPreferences.OnSharedPreferenceChangeListener listener)
注册一个监听器。取消先前注册的回调方法。



通过上面的editor() 方法就可以实例化SharedPreferences.Editor对象,接着就可以使用下面的一些方法进行存储。


Public Methods
abstract SharedPreferences.Editor 	

                                      
abstract boolean 	clear ()    删除所有值

commit ()   提交你设置的值
abstract SharedPreferences.Editor 	putBoolean (String key, boolean value)   设置boolean值存储
abstract SharedPreferences.Editor 	putFloat (String key, float value)  设置浮点型数据存储
abstract SharedPreferences.Editor 	putInt (String key, int value)  设置整形数据存储
abstract SharedPreferences.Editor 	putLong (String key, long value) 设置长整型
abstract SharedPreferences.Editor 	putString (String key, String value)  设置字符串数据存储
abstract SharedPreferences.Editor 	

remove (String key)  删除一个
 

SharedPreferences存储类效率分析

      SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?

SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android123提示最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。



Android数据存取之Preferences

这种方式应该是用起来最简单的Android读写外部数据的方法了。他的用法基本上和 J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单、透明的方式来保存一些用户个性化设置的字体、颜色、位置等参数信息。一般的应用程序都会提供“设置”或者“首选项”的这样的界面,那么这些设置最后就可以通过Preferences来保存,而程序员不需要知道它到底以什么形式保存的,保存在了什么地方。当然,如果你愿意保存其他的东西,也没有什么限制。只是在性能上不知道会有什么问题。

在Android系统中,这些信息以XML文件的形式保存在 /data/data/PACKAGE_NAME /shared_prefs 目录下。

 

 

分享到:
评论
1 楼 shangs2010 2012-03-29  
分析的真仔细,多谢!

相关推荐

    sharePreference

    封装的一些关于sharePreference的方法

    SharePreference

    在Android系统中,SharePreference采用键值对(key-value pairs)的形式来存储数据,通常是以XML文件的形式存在于设备的沙盒目录中。 使用SharePreference的优点包括其简洁的API接口、易于理解和操作,以及较低的...

    SharePreference与File详解

    在实际应用中,`SharePreference`常用于存储用户设置和轻量级配置,而`File`则用于处理大量数据或多媒体资源。例如,`filesave`可能是用来保存用户上传的文件,`otherAccessToApp`可能代表其他应用访问本应用存储的...

    sharepreference

    Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/&lt;package name&gt;/...

    sharepreference删除文件数据不会丢失.rar

    这个名为"sharepreference删除文件数据不会丢失.rar"的压缩包文件可能包含了关于如何在SharedPreferences中处理数据删除和恢复的示例代码或教程。 SharedPreferences的工作原理是将数据持久化存储到一个XML文件中,...

    Sharepreference

    在描述中提到的“Sharepreference代码测试”,我们通常关注以下几个方面: 1. **读写操作**: - 测试`edit()`方法创建的`SharedPreferences.Editor`对象,用于添加、修改或删除键值对。 - 检查`putXXX()`方法(如...

    android跨应用sharepreference数据共享

    本主题聚焦于在Android 2.3(API级别9)及以下版本中,如何利用SharedPreferences进行跨应用的数据共享。SharedPreferences是Android提供的一种轻量级的数据存储机制,它允许我们保存和读取简单的键值对数据,如字符...

    android4.0跨应用共享数据通过sharepreference

    不过,请注意,从Android 6.0(API级别23)开始,`MODE_WORLD_READABLE`和`MODE_WORLD_WRITEABLE`被弃用,因此在更高版本的Android系统上,你需要处理运行时权限来实现类似的功能。 2. **读写SharedPreferences** ...

    SharePreference音本应用

    在这个"SharePreference音本应用"中,我们将探讨如何利用`SharedPreferences`来存储和读取数据,以及在实际应用场景中的使用技巧。 `SharedPreferences`是一个接口,它提供了键值对存储的方式,支持基本数据类型如...

    Android 序列化对象存储到sharepreference

    在Android开发中,序列化(Serialization)是一种将对象转换为可传输或存储格式的过程,而SharedPreferences则是一个轻量级的数据存储机制,常用于保存应用程序的简单配置数据。本篇文章将详细探讨如何将Android序列...

    百度定位并获取县区天气-XML+fragment+SharePreference.zip

    此工程较BaiduLocationXML相比: 1.植入fragment,结合微信UI 2.在原本主界面的button textview textview 移植到Fragment1 3.增加网络判断,网络不通的情况下做另外处理 4.在网络通畅的情况下,将地址信息、天气信息...

    sharepreference工具类

    很好用的工具类,使用sharepreference存储数据,节省程序员开发时间

    SharePreference存储demo

    不同于文件的存储方式,SharePreference是使用键值对的方式来存储数据的。也就是说 当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以 通过键把相应的值取出来。

    Eclipse编写的Android SharePreference应用实例

    在Android开发中,SharePreferences是Android提供的一种轻量级的数据存储方式,用于保存应用程序的简单配置数据,如用户设置、应用状态等。本教程将基于Eclipse IDE V4.2.0,通过一个实例详细讲解如何使用...

    android_save_data.rar_android_android 网络_sharepreference

    在Android应用开发中,数据保存是至关重要的环节,它涉及到应用程序的状态维护、用户偏好设置以及持久化数据存储。本教程将深入探讨Android程序中的三种主要数据存储方式:SQLite数据库、网络存储(HTTP-UPDATE)...

    Android Sharepreferences 登录示例demo 有注释,对初学者很有帮助

    SharePreferences是Android提供的一种轻量级的数据存储机制,适用于存储简单的键值对数据,如登录凭证、用户设置等。本篇文章将深入讲解如何在Android中使用SharePreferences实现登录功能,并结合单元测试进行代码...

    Android代码-一个容易使用android sharepreference的库

    Favor A easy way of using Android SharedPreferences. How to use this library Using Gradle ... Using Maven ...2 The FavorAdapter class generates an implementation of the interface. account = new ...

    一个好用的Android SharePreferences.zip

    在Android开发中,`SharedPreferences` 是一种常用的轻量级数据存储方式,用于保存应用程序的简单配置数据,如用户设置、应用状态等。它提供了一种键值对的形式来存储数据,支持基本的数据类型如字符串、整型、浮点...

Global site tag (gtag.js) - Google Analytics