[翻譯]Android教程-保存數據-保存鍵值對

來源: html

http://developer.android.com/training/basics/data-storage/index.html java

http://developer.android.com/training/basics/data-storage/databases.html android

學習本教程的前置條件:
  • Android 1.6 (API Level 4) 或者更高
  • 熟悉Map鍵值對集合
  • 數字Java文件IO的API
  • 熟悉SQL數據庫

大多數Android應用須要存儲數據,即便只是在onPause()期間存儲有關應用的狀態信息,以便用戶的操做進度不會丟失掉。
即便是最非凡的應用也須要存儲用戶設置,而某些應用則必須在文件和數據庫中管理大量的信息。
本課程向你介紹向你介紹在Android中存儲數據的主要選擇,包括:
  • 在一個共享的首選項文件中保存簡單數據類型的鍵值對
  • 在Android的文件系統中保存任意文件
  • 使用有SQLite管理的數據庫

保存鍵值對

若是你有一小撮鍵值對想要保存,你就應該使用SharedPreferences API. SharedPreferences對象指向一個包含鍵值對的文件,而且提供讀寫這些鍵值對的簡單方法。 數據庫

每個SharedPreferences文件由框架來進行管理,而且能夠是私有的或者是共享的。 app

這裏向你展現如何使用SharedPreferences API來存儲和獲取簡單的值。 框架

注意:SharedPreferences API只用於讀寫鍵值對,而你不該該將它們同Preference API混淆,後者幫助你爲你的應用設置構建用戶界面(儘管它們使用了SharedPreferences做爲它們保存應用設置的實現)。有關Preference的信息,見Settings指南。 學習

獲得一個處理SharedPreferences的Handle

經過調用下面兩種方法之一,你能夠建立一個新的,或者是訪問一個已經存在的共享首選項文件: spa

  • getSharedPreferences() — 若是你須要多個由名稱標示的共享首選項文件,就可使用這個方法. 你能夠從任何你的應用中的Context處調用這個方法.
  • getPreferences() — 若是你只須要一個用於activity的共享首選項,就可使用這個方法. 由於這個方法會獲取屬於這個activity的共享首選項文件, 你不必再給這個文件指定一個名稱.
例如,下面的代碼會在一個Fragment中被執行。它會訪問有資源字符串 R.string.preference_file_key標識共享首選項文件, 而且使用私有模式打開它,那樣這個文件就只能被你的應用所訪問了.
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
        getString(R.string.preference_file_key), Context.MODE_PRIVATE);
當爲你的共享首選項文件命名時,你應該使用一個能被你的應用識別爲惟一的名稱,好比「com.example.myapp.PREFERENCE_FILE_KEY」


此外,若是你只須要在你的activity中用到一個共享首選項文件是,你可使用getPreferences()方法。 code

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
注意:若是你建立了帶有 MODE_WORLD_READABLE 或者 MODE_WORLD_WRITEABLE的共享首選項文件,那麼其它知道這個文件標識的應用也能夠訪問到你的數據.

寫入共享首選項

爲了向一個共享首選項文件寫入,經過在你的SharedPreferences上調用edit(),建立一個SharedPreferences.Editor。 htm

使用諸如putInt()和putString()方法傳入你想要寫入的鍵值對。而後調用commit()來保存更新。例如:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();

讀取共享首選項

爲了從一個共享首選項文件獲取到值,能夠調用諸如getInt()和getString()方法,提供鍵以獲取到你想要的值,而且能夠選擇在這個鍵值對不存在時返回一個默認值。例如:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
相關文章
相關標籤/搜索