Android官方开发文档Training系列课程中文版:数据存储之键值对序列存储
原文地址:http://android.xsoftlab.net/training/basics/data-storage/index.html
引言
大多數的安卓APP需要保存數據,即使僅僅存儲在onPause狀態下的信息,這樣的話,用戶的進度信息就不會被丟失。大多數重量級的APP還需要保存用戶的設置信息,還有一些APP必須管理在文件或者數據庫中存儲的大量信息。這節課會介紹Android中的數據的主要存儲方式,包括以下幾點:
- 在共享參數文件中存儲簡單的鍵值對信息
- 在Android文件系統中存儲任意的文件
- 使用SQLite數據庫管理系統
存儲鍵值對序列
原文地址:http://android.xsoftlab.net/training/basics/data-storage/shared-preferences.html
如果你有個相對簡單的鍵值對序列需要保存,你應該使用SharedPreferences API。一個SharedPreferences指向的是一個文件,這個文件包含了鍵值對。并且SharedPreferences提供了簡單的方法可以讀取或者寫入數據。每一個SharedPreferences文件都是被Framework框架所管理的,它可以是私有的或者是公開的。
這節課向你展示了如何使用SharedPreferences API來存儲和接收簡單的值。
**Note:**SharedPreferences API僅僅可以用來讀取和寫入鍵值對,你不應該將它與Preference API搞混,Preference API可以幫助你構建APP設置的用戶界面(盡管Preference內部使用的是SharedPreferences來保存APP的設置信息的)。更多有關使用Preference API的相關信息,請參見Settings向導。
獲取SharedPreferences的句柄
你可以創建一個共享參數文件或者訪問一個已經存在的共享參數文件,通過調用以下兩者之一的方法:
- getSharedPreferences() 如果需要多個共享參數文件的話可以使用這個方法,每個文件都擁有一個標識符,可以通過這個標識符通過該方法的第一個參數獲得共享參數對象。你可以通過APP中的任意Context對象調用它。
- getPreferences() 只可以在Activity中使用該方法。該方法適用于你只需要一個與該Activity有關的共享參數文件。因為這個方法會返回一個屬于這個Activity的默認的共享參數文件,你不必要去指定共享參數的名稱。
舉個例子,下面這段代碼會在Fragment中執行。這里使用了一個字符串資源來作為共享參數的標識符,并通過該標識符獲得對應的共享參數對象,并且以私有的模式打開它,所以這個文件只僅限在你的APP內訪問。
Context context = getActivity(); SharedPreferences sharedPref = context.getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE);當需要命名你的共享參數文件時,你應該使用APP的唯一標識符來命名,比如”com.example.myapp.PREFERENCE_FILE_KEY”
或者,如果你只需要一個與Activity關聯的共享參數文件,你可以使用getPreferences()方法:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);警告:如果你使用了MODE_WORLD_READABLE或者MODE_WORLD_WRITEABLE模式創建了一個共享參數文件,那么知道文件標識符的其它APP也可以訪問你的數據。
寫入數據到共享參數中
為了可以寫入數據到共享參數文件中,需要通過調用SharedPreferences的edit()方法創建一個SharedPreferences.Editor對象。
通過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);總結
以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:数据存储之键值对序列存储的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android官方开发文档Trainin
- 下一篇: Android官方开发文档Trainin