十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据。
十年的长清网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整长清建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“长清网站设计”,“长清网站推广”以来,每个客户项目都认真落实执行。
在做连连看游戏的时候,需要保存游戏进度,所以稍微用了一下,这里做个小结。
我的做法是,首先给出如下定义:
private SharedPreferences sp; private static String MY_APP="MYAPP";
然后再写两个方法,执行数据的读写操作。
/** * 保存数据 */ public void saveData(String key,int value) { // 获取SharedPreferences对象 sp = MainActivity.this.getSharedPreferences(MY_APP, MODE_PRIVATE); // 存入数据,除了putInt还有putString等其他方法,可以自己挖掘一下~ //另外,每次存入的就是“key-value”形式的键值对,很好理解 Editor editor = sp.edit(); editor.putInt(key, value); editor.commit(); } /** * 读取数据,找到返回数据内容,否则返回-1 */ public int readData(String key) { sp = MainActivity.this.getSharedPreferences(MY_APP, MODE_PRIVATE); int v=sp.getInt(key, 0); if ( v != 0) { return v; } else { return -1; } }
然后在程序里就可以使用这两个方法来存取数据了。如果要存的数据项不多但是比较频繁的话,可以把key也定义为静态变量,这样的话使用起来比较方便,修改也比较容易。
这里使用的putInt和readData返回值是我根据自己程序的需要进行设置的,具体要怎么写以及是否需要加一些约束条件,要根据自己的程序做适当的调整,需求明确的话,这个做起来也很easy的。
下面是一段完整的代码
package com.test.leetlesharedpreferences; import android.os.Bundle; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.view.Menu; public class MainActivity extends Activity { private SharedPreferences sp; private static String MY_APP="MYAPP"; private static String MY_KEYINT="keyint"; private static String MY_KEYSTRING="keystring"; @Override protected void onCreate(Bundle savedInstanceState) { 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)); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } /** * 两个写数据的方法 */ private void saveData(String key,int value) { sp=this.getSharedPreferences(MY_APP, MODE_PRIVATE); Editor editor=sp.edit(); editor.putInt(key, value); editor.commit(); } private void saveData(String key,String value) { sp=this.getSharedPreferences(MY_APP, MODE_PRIVATE); Editor editor=sp.edit(); editor.putString(key, value); editor.commit(); } /** * 两个读数据的方法 */ private int readInt(String key) { sp=MainActivity.this.getSharedPreferences(MY_APP, MODE_PRIVATE); return sp.getInt(key, 0); } private String readString(String key) { sp=this.getSharedPreferences(MY_APP, MODE_PRIVATE); return sp.getString(key, "没有数据"); } }
结果如下
2015.01.02