SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据。


在做连连看游戏的时候,需要保存游戏进度,所以稍微用了一下,这里做个小结。


我的做法是,首先给出如下定义:

privateSharedPreferencessp;privatestaticStringMY_APP="MYAPP";

然后再写两个方法,执行数据的读写操作。

/***保存数据*/publicvoidsaveData(Stringkey,intvalue){//获取SharedPreferences对象sp=MainActivity.this.getSharedPreferences(MY_APP,MODE_PRIVATE);//存入数据,除了putInt还有putString等其他方法,可以自己挖掘一下~//另外,每次存入的就是“key-value”形式的键值对,很好理解Editoreditor=sp.edit();editor.putInt(key,value);editor.commit();}/***读取数据,找到返回数据内容,否则返回-1*/publicintreadData(Stringkey){sp=MainActivity.this.getSharedPreferences(MY_APP,MODE_PRIVATE);intv=sp.getInt(key,0);if(v!=0){returnv;}else{return-1;}}

然后在程序里就可以使用这两个方法来存取数据了。如果要存的数据项不多但是比较频繁的话,可以把key也定义为静态变量,这样的话使用起来比较方便,修改也比较容易。

这里使用的putInt和readData返回值是我根据自己程序的需要进行设置的,具体要怎么写以及是否需要加一些约束条件,要根据自己的程序做适当的调整,需求明确的话,这个做起来也很easy的。


下面是一段完整的代码

packagecom.test.leetlesharedpreferences;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.SharedPreferences;importandroid.content.SharedPreferences.Editor;importandroid.view.Menu;publicclassMainActivityextendsActivity{privateSharedPreferencessp;privatestaticStringMY_APP="MYAPP";privatestaticStringMY_KEYINT="keyint";privatestaticStringMY_KEYSTRING="keystring";@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);System.out.println("readInt(MY_KEYINT)="+Integer.toString(readInt(MY_KEYINT)));System.out.println("readString(MY_KEYSTRING)="+readString(MY_KEYSTRING));System.out.println("--------我是分割线----------------------");saveData(MY_KEYINT,100000);saveData(MY_KEYSTRING,"那么问题来了");System.out.println("readInt(MY_KEYINT)="+Integer.toString(readInt(MY_KEYINT)));System.out.println("readString(MY_KEYSTRING)="+readString(MY_KEYSTRING));}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.getMenuInflater().inflate(R.menu.main,menu);returntrue;}/***两个写数据的方法*/privatevoidsaveData(Stringkey,intvalue){sp=this.getSharedPreferences(MY_APP,MODE_PRIVATE);Editoreditor=sp.edit();editor.putInt(key,value);editor.commit();}privatevoidsaveData(Stringkey,Stringvalue){sp=this.getSharedPreferences(MY_APP,MODE_PRIVATE);Editoreditor=sp.edit();editor.putString(key,value);editor.commit();}/***两个读数据的方法*/privateintreadInt(Stringkey){sp=MainActivity.this.getSharedPreferences(MY_APP,MODE_PRIVATE);returnsp.getInt(key,0);}privateStringreadString(Stringkey){sp=this.getSharedPreferences(MY_APP,MODE_PRIVATE);returnsp.getString(key,"没有数据");}}

结果如下


2015.01.02



附件:http://down.51cto.com/data/2365259