在Android系統中,有各種不同的儲存方式,而SharedPreference就是其中最簡單的一種。
SharedPreference本質上就是一個xml檔案,其儲存結構則是一個Map,裡面的值都是以鍵值對的形式存在,如:
可以看到根結點是一個元素,下面的每一個元素都是我們存進去的值,分別對應不同的基本屬性,sharedpreference也僅支援這些簡單的基本屬性。<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+0vLOqsbkvPK1paOsy/nS1NK7sOPAtMu1o6zO0sPH08NzaGFyZWRwcmVmZXJlbmNlwLS05rSi0rvQqbzytaW1xNe0zKzQxc+io6yxyMjnztLDx9f20vTA1rKlt8XG97XEyrG68qOstbHO0sPHzcuz9rPM0PKjrL/J0tS9q9X91NqypbfFtcS46Mf6us3G5L34tsi4+NC0tb3Su7j2c2hhcmVkcHJlZmVyZW5jZcDvw+ajrLWxz8K0ztbY0MK08r+qsqW3xcb3tcTKsbryo6y+zb/J0tS9q8/Ix7Cxo7TmtcTXtMysuPjEw7P2wLSjrLzM0PiypbfFoaM8L3A+CjxwPr3Tz8LAtM7Sw8e+zcC0v7TSu8/CxuTTw7eoo6zO0sPH0LTSu7j2tcfCvb3nw+ajujwvcD4KPHA+MaOpTWFpbkFjdGl2aXR5o7rU2rXHwr2958PmyuTI69PDu6fD+7j6w9zC66OsteO797C0xaWjrL2r08O7p8P7uPrD3MLrsaO05tTac2hhcmVkcHJlZmVyZW5jZaOsvfjI67u2062958PmoaM8L3A+CjxwPjKjqVdlbGNvbWVBY3Rpdml0eaO61Nq7ttOtvefD5qOstNNzaGFyZWRwcmVmZXJlbmNl1tDEw7P208O7p8P7o6zVucq+1Nq958Pmyc+hozwvcD4KPHA+tPrC68jnz8KjujwvcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">public class MainActivity extends Activity implements OnClickListener{...private SharedPreferences sharedPreferences;private SharedPreferences.Editor editor;...@Overrideprotected void onCreate(Bundle savedInstanceState) {...sharedPreferences = this.getSharedPreferences(ACCOUNTS, MODE_PRIVATE);editor = sharedPreferences.edit();}...private boolean write(){username = etUsername.getText().toString();password = etPassword.getText().toString();editor.putString(USERNAME, username);editor.putString(PASSWORD, password);editor.putBoolean("boolean", true);editor.putFloat("float", 2.0f);editor.putInt("int", 1000);editor.putLong("Long", 1234567890l);editor.commit();...}}
我們來看一下sharedpreference的使用:
1)利用this.getSharedPreferences方法來擷取一個對象:
1.1)其中第一個參數是這個檔案的名字,當我們儲存的時候,檔案會被放在data/data/包名/shared_prefs的路徑下:
1.2)第二個參數是一個Mode,一般會用到以下三個值:
a)MODE_PRIVATE:表明是私人的,建立的檔案只能由當前應用程式訪問。
b)MODE_WORLD_READABLE:世界可讀,很顯然,其他應用程式也能訪問,但只能讀。
c)MODE_WORLD_WRITABLE:世界可寫,風險更大,其他應用程式不僅能讀,還能寫(會產生覆蓋)。
2)如果我們只是需要去讀取值的話,比如在WelcomeActivity中,我們只需要去讀取其裡面的值,只要擷取這個對象就可以了。
public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_welcome);sharedPreferences = this.getSharedPreferences(MainActivity.ACCOUNTS, MODE_PRIVATE);tvWlcUser = (TextView) findViewById(R.id.tvWlcUser);String username = sharedPreferences.getString(MainActivity.USERNAME, "Mr. Unknown");tvWlcUser.setText(username);}在上面,我們可以調用sharedpreference.getXXX等方法來擷取對應類型的值,第一個參數是Key值,第二個參數是取不到value的時候,給的預設值。
3)當我們想要往檔案裡面寫值的時候,如第一段代碼裡面所寫,我們就還需要一個editor對象。其實所有的寫值操作是通過editor的對象來寫的,它就像一個事務一樣,最後要調用 editor.commit()方法才能將資料寫到檔案中,並儲存在上面所寫的文檔中。
下面是登陸介面,隨便輸入使用者名稱跟密碼,然後點擊login,就會進入到歡迎介面。原始碼請點擊!