资源描述
An droid数据的四种存储方式SharedPrefere nces、SQLite 、ContentProvide21 22r 和 FileSharePrefere nces除了 SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value 键值对数据,通常用来存储一些简单的配置信息。其存储位置在 /data/data/shared_prefs 目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor 对象实现。实现 SharedPrefere nces存储的步骤如下:一、 根据 Context 获取 SharedPreferences对象二、利用edit()方法获取Editor对象。三、 通过 Editor对象存储key-value键值对数据。四、 通过commit。 方法提交数据。具体实现代码如下:1 publicclass MainActivity extends Activity 2 Override3 publicvoid onCreate(Bundle savedInstanceState) 4 super .onCreate(savedlnstanceState);5 setContentView(R.layout.main);66 / 获取 SharedPreferences 对象7 Context ctx = MainActivity.this ;8 SharedPreferencessp = ctx.getSharedPreferences(SP, MODE_PRIVATE);10/存入数据11 Editor editor = sp.edit();12 editor.putString(STRING_KEY, string);13editor.putlnt(INT_KEY, 0);14editor.putBoolean(BOOLEAN_KEY,true );mit();1617 返回 STRING_KEY 的值18Log.d(SP, sp.getString(STRING_KEY, none);19如果NOT_EXIST不存在,则返回值为none20Log.d(SP, sp.getString(NOT_EXIST, none);这段代码执行过后,即在/data/data/com.test/shared_prefs目录下生成了一个SP.xml文件,一个应用可以创建多个这样的xml文件。如图所示:MarneSizeDateTimePermsstonsInfo:+ 1 - c on *.andr oi d* server, vpnZ0U-01-2813;0Sdriflxr-x-x+ i._- com,android.settings2011-09-1410:56driwjjnx-x+ i. - c am ndr ai d. $ ouridrecor der2011-01-281310Sdrwr-M i 二 com android, spare jjarts2011-01-2813:0drx/rwp i._:- c on, a rdr oi d. spewhr ecorder2011-01-2013106drr-x-xll & com .android, term011-01-2613:09drwxr-)tx+ i.:亠 c(xnndroidTvll|Mper -iiveptker011-Q1-26irwxr-xxl+ll e COf71.SVOK.piCQ2011-G1-2B13109dmw-x*xt: L3 com .test2011-09-1611:12drwsr-xx田DHb2Q11-09-1610:55dr/vr-sr-x-i & shared Drefs011-094611;1Zdrrwy(-x.5P.xnl1S92011-09-1611:12-:+ jp. co.omronsoft .apBTirjnn2Q11-09-161C:4Sdrwxr-Kx壬i irn- dontpanic20ll-0b26!3;07drsr-xQb cdzaii-oi-2613:07drwKMX-x! il ; lost-i-fciLnd2011-01-ZB13:07drwsnwi-田产misc2011-01-2613:07drwxrvix-t+ 0 prooeft2011-09-1410156drwxSP.xml文件的具体内容如下:1 23 string 456在程序代码中,通过 getXXX方法,可以方便的获得对应Key的Value值,如果key值错误或者此 key无对应value 值,SharedPreferences提供了一个赋予默认值的机会,以此保证程序的健壮性。 如下图运行结果中因为并无值为 ”NOT_EXIST” 的 Key ,所以 Log打印出的是其默认值:none。在访问一个不存在key 值这个过程中,并尢仕何异常抛出。TikspidtagMessage:051.11 2 : 2C.D 6SCE=?string139亠迁 11:26. 20.135D 805SPnoneSharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPrefere nces也有其自身缺陷,比如其职能存储 boolean , int,float , long和String 五种简单的数据类型,比如其无法 进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。
展开阅读全文