android開發課件:數據訪問-SP_第1頁
android開發課件:數據訪問-SP_第2頁
android開發課件:數據訪問-SP_第3頁
android開發課件:數據訪問-SP_第4頁
android開發課件:數據訪問-SP_第5頁
已閱讀5頁,還剩35頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Android數據訪問-SPOutlinesSharedPreferences介紹特點本地訪問訪問其它程序的SP訪問PreferenceFragment的使用什么是SharedPreferencesSharedPreferences(SP)是Android平臺上一個輕量級的存儲類,常用于存儲較簡單的參數設置。它提供了Android平臺常規的Long、Int、String、float、Boolean等幾種類型的保存。例如:保存一些常用的配置比如窗口狀態,一般在Activity中重載窗口狀態onSaveInstanceState,保存時一般使用SharedPreferences完成。

例如:可以通過它保存上一次用戶所作的修改或者自定義參數設定,當再次啟動程序后依然保持原有的設置。SP目前不支持多進程的訪問。SharedPreferences特點通過SP可以將NVP(Name/ValuePair,名稱/值對)保存在Android的文件系統中,以XMl文件形式保存,它的本質是基于XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/<包名>/shared_prefs目錄下。Android為每個應用程序建立了與包同名的目錄,用來保存應用程序產生的數據,這些數據包括文件、SharedPreferences文件和數據庫等。SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過Editor對象實現。存儲路徑SharedPreferences介紹特點本地訪問其它程序對sp的訪問PreferenceFragment的使用簡單例子獲得SP實例SP的編輯SP的讀取實現步驟獲取SharedPreferences對象利用SP對象,獲取Editor對象。通過Editor對象存儲或獲取key-value鍵值對數據。putString/putInt/putFloat/putLong/putBoolean

getString/getInt/getFloat/getLong/getBoolean

如果是存儲數據,還需要通過commit()方法提交數據。獲取SP-訪問模式用getSharedPreferences(Stringname,intmode)函數獲得sp實例時,第一個參數是XML文件名,第二個參數是訪問模式。SharedPreferences支持三種訪問模式私有(MODE_PRIVATE):僅有創建程序有權限對其進行讀取或寫入全局讀(MODE_WORLD_READABLE):不僅創建程序可以對其進行讀取或寫入,其他應用程序也讀取操作的權限,但沒有寫入操作的權限全局寫(MODE_WORLD_WRITEABLE):創建程序和其他程序都可以對其進行寫入操作,但沒有讀取的權限有的時候需要將SharedPreferences的訪問模式設定為即可以全局讀,也可以全局寫,這樣就需要將兩種模式寫成下面的方式publicstaticintMODE=Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLEAndroid中文件訪問權限:見下頁在Linux系統中,文件權限分別描述了創建者、同組用戶和其他用戶對文件的操作限制。x表示可執行,r表示可讀,w表示可寫,d表示目錄,-表示普通文件。因此,“-rw-rw-rw”表示文件可以被創建者、同組用戶和其他用戶進行讀取和寫入操作,但不可執行。產生這樣的文件權限與程序人員設定的SharedPreferences的訪問模式有關,”-rw-rw-rw”的權限是“全局讀+全局寫”的結果。如果將SharedPreferences的訪問模式設置為私有,則文件權限將成為“-rw-rw---”,表示僅有創建者和同組用戶具有讀寫文件的權限獲取SP-XML文件導出XML文件查看XML文件在eclipse的FileExplorer頁面,點擊右上角的一個保存到電腦的按鈕,可以將生成mysp.xml保存到pc機上,從而查看mysp.xml文件的內容以下是mysp.xml文件的內容讀取SP內容利用SP的getString/getBoolean/getInt等函數,可以獲得XML中的相關內容。getXXX函數的第一個參數是putXXX函數中存放的KEY值,第二個參數是默認的返回值:即如果getXXX無法找到對應的KEY值,則返回默認值。SharedPreferences介紹特點本地訪問其它程序對sp的訪問PreferenceFragment的使用訪問其它程序的SP在創建一個SharedPreferences的時候,如果需要讓別的應用程序也能訪問到本程序的SharedPreferences,則在創建的時候指定MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE就可以了。在其他程序訪問的時候,只要能獲取到創建的程序的Context就可以訪問了。具體步驟需要創建其他程序對應的Context。使用Context.createPackageContext(StringpackageName,intflags)。Context.createPackageContext(StringpackageName,intflags):根據包的名稱,返回此包的Context。通過flags控制安全性:可選值:CONTEXT_INCLUDE_CODE或CONTEXT_IGNORE_SECURITY(常用)調用其他應用程序的Context的getSharedPerferences即可獲取相應的SharedPreferences對象。其他操作與操作本地的SharedPreferences一致。訪問其他程序sp的條件訪問其他應用程序的SharedPreferences必須滿足三個條件共享者需要將SharedPreferences的訪問模式設置為全局讀或全局寫訪問者需要知道共享者的包名稱和SharedPreferences的名稱,以通過Context獲得SharedPreferences對象訪問者需要確切知道每個數據的名稱和數據類型,用以正確讀取數據案例publicstaticfinalStringPREFERENCE_PACKAGE="edu.hznu.dataacess";publicstaticfinalStringPREFERENCE_NAME=“mysp";publicstaticintMODE=Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE;

publicvoidonCreate(BundlesavedInstanceState){ Contextc=null; try{ c=createPackageContext(PREFERENCE_PACKAGE,Context.CONTEXT_IGNORE_SECURITY); }catch(NameNotFoundExceptione){

e.printStackTrace(); }

SharedPreferences

sharedPreferences=c.getSharedPreferences(PREFERENCE_NAME,MODE);Stringname=sharedPreferences.getString("Name","Tom"); intage=sharedPreferences.getInt("Age",20); floatheight=sharedPreferences.getFloat("Height",);}表示忽略所有可能產生的安全問題。這段代碼可能引發異常,因此必須防止在try/catch中SharedPreferences介紹特點本地訪問其它程序對sp的訪問PreferenceFragment的使用注意:Preference指的是首選項的一些配置。PreferenceFragment(PF)簡介用perference鍵值對的方式來處理,在android3.0之前,我們一般去繼承Preference這個基類去給用戶呈現一個可以設置的界面,其中的layout需要自己編寫,Android3.0之后,則可以使用Fragment的首選項配置方法,即使用PreferenceFragement來實現。使用PF時,首選項將會遵循系統首選項的視覺風格,并通過使用XML文件來創建各個首選項的視圖層級。我們可以直接通過加載XML文件來顯示首選項的UI。示例界面定義在XML文件首選項頁面的UI定義簡單的說,首選項頁面定義在一個XML文件中。你可以首先在res->xml中添加一個xml文件。右鍵選擇new->other->androidxmlfile.在彈出的NewAndroidXMLfile的ResourceType下拉框中,選擇Preference.在根目錄(RootElement)選項中,選擇PreferenceScreen。與傳統SP一樣的存儲。。與傳統SP一樣,PF也存儲在data/data/package_name目錄中。但是每個Preferencece存儲在相對應下的SharedPreference文件夾下。一個PreferenceScreen對象應該在首選項層級的頂部。此外,隨后在層次結構PreferenceScreen表示一個屏幕分割處——就是包含隨后的PreferenceScreen應顯示在另一個屏幕頁面上首選項中的分欄在preferencexml中,使用<PreferenceScreen>表示分屏,使用<PreferenceCategory>表示分欄。在preferencexml中,有一些表示UI“控件”的條目。CheckBoxPreference:勾選框,同CheckBoxSwitchPreference:同Switch控件ListPreference:同ListViewPreference:類似于TextView下面,我們對比Preference和View下得各個子控件,對他們的家庭元素在宏觀上有個更好的把握性。通用XML屬性說明屬性說明android:key每個Preference控件獨一無二的”ID”,唯一表示此Preference。非常重要!android:defaultValue默認值。例如,CheckBoxPreference的默認值可為”true”,默認為選中狀態android:title每個Preference在PreferenceScreen布局上顯示的標題——大標題android:summary每個Preference在PreferenceScreen布局上顯示的標題——小標題(可以沒有)android:persistent表示Preference元素所對應的值是否寫入sharedPreferen文件中,如果是true,則表示寫例子ListPreference…Preference加載“首選項”頁面首先,如上所示,以XML文件定義一個UI頁面。然后,定義一個繼承自PreferenceFragment類的首選項類,并實現頁面的點擊事件、選項改變等事件接口,如下所示:在SettingFragment類的OnCreate事件中,利用函數addPreferencesFromResource加載XML文件。假設XML文件名為preference.xml加載方式為:addPreferencesFromResourc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論