Android學習小Demo(7)SharedPreference的使用

來源:互聯網
上載者:User

在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,就會進入到歡迎介面。原始碼請點擊!



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.