SharedPreferences是Android中最容易理解的數(shù)據(jù)存儲(chǔ)技術(shù),實(shí)際上SharedPreferences處理的就是一個(gè)key-value(鍵值對(duì))SharedPreferences常用來(lái)存儲(chǔ)一些輕量級(jí)的數(shù)據(jù)。
十年的長(zhǎng)清網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整長(zhǎng)清建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“長(zhǎng)清網(wǎng)站設(shè)計(jì)”,“長(zhǎng)清網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
在做連連看游戲的時(shí)候,需要保存游戲進(jìn)度,所以稍微用了一下,這里做個(gè)小結(jié)。
我的做法是,首先給出如下定義:
private SharedPreferences sp; private static String MY_APP="MYAPP";
然后再寫兩個(gè)方法,執(zhí)行數(shù)據(jù)的讀寫操作。
/** * 保存數(shù)據(jù) */ public void saveData(String key,int value) { // 獲取SharedPreferences對(duì)象 sp = MainActivity.this.getSharedPreferences(MY_APP, MODE_PRIVATE); // 存入數(shù)據(jù),除了putInt還有putString等其他方法,可以自己挖掘一下~ //另外,每次存入的就是“key-value”形式的鍵值對(duì),很好理解 Editor editor = sp.edit(); editor.putInt(key, value); editor.commit(); } /** * 讀取數(shù)據(jù),找到返回?cái)?shù)據(jù)內(nèi)容,否則返回-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; } }
然后在程序里就可以使用這兩個(gè)方法來(lái)存取數(shù)據(jù)了。如果要存的數(shù)據(jù)項(xiàng)不多但是比較頻繁的話,可以把key也定義為靜態(tài)變量,這樣的話使用起來(lái)比較方便,修改也比較容易。
這里使用的putInt和readData返回值是我根據(jù)自己程序的需要進(jìn)行設(shè)置的,具體要怎么寫以及是否需要加一些約束條件,要根據(jù)自己的程序做適當(dāng)?shù)恼{(diào)整,需求明確的話,這個(gè)做起來(lái)也很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, "那么問(wèn)題來(lái)了"); 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; } /** * 兩個(gè)寫數(shù)據(jù)的方法 */ 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(); } /** * 兩個(gè)讀數(shù)據(jù)的方法 */ 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, "沒(méi)有數(shù)據(jù)"); } }
結(jié)果如下
2015.01.02