最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android應(yīng)用中使用SharedPreferences類存儲數(shù)據(jù)的方法

 更新時間:2016年04月12日 17:07:38   作者:chenzheng_java  
這篇文章主要介紹了Android應(yīng)用中使用SharedPreferences類存儲數(shù)據(jù)的方法,SharedPreferences使用鍵值對應(yīng)的方式進行存儲,使用于少量的數(shù)據(jù)保存,需要的朋友可以參考下

在Android系統(tǒng)中提供了多種存儲技術(shù).通過這些存儲技術(shù)可以將數(shù)據(jù)存儲在各種存儲介質(zhì)上.比如sharedpreferences可以將數(shù)據(jù)保存著應(yīng)用軟件的私有存儲區(qū),這些存儲區(qū)的數(shù)據(jù)只能被寫入這些數(shù)據(jù)的軟件讀取.當然Android還支持文件存儲、SQLite數(shù)據(jù)庫和Content Provider。在這里我們將對sharedpreferences存儲方式進行介紹。

SharedPreferences是一種輕量級的數(shù)據(jù)存儲方式,學過Web開發(fā)的同學,可以想象它是一個小小的Cookie。它可以用鍵值對的方式把簡單數(shù)據(jù)類型(boolean、int、float、long和String)存儲在應(yīng)用程序的私有目錄下(data/data/包名 /shared_prefs/)自己定義的xml文件中。

SharedPreferences是以鍵值對來存儲應(yīng)用程序的配置信息的一種方式,它只能存儲基本數(shù)據(jù)類型。一個程序的配置文件僅可以在本應(yīng)用程序中使用,或者說只能在同一個包內(nèi)使用,不能在不同的包之間使用。實際上sharedPreferences是采用了XML格式將數(shù)據(jù)存儲到設(shè)備中,在DDMS中的File Explorer中的/data/data//shares_prefs下。

在所有的Android SDK存儲技術(shù)中SharedPreferences技術(shù)是最容易理解和使用的,因為SharedPreferences處理的就是一個key–value對。比如保存產(chǎn)品的名稱,就可以將key設(shè)為produceName,value為實際的產(chǎn)品名。

一、獲取SharedPreferences對象的方法

(1)通過函數(shù)Context.getSharedPreferences(String name,int mode),其中name為本組件的配置文件名(如果想要與本應(yīng)用程序的其他組件共享此配置文件,可以用這個名字來檢索到這個配置文件),mode為操作模式,默認的模式為0或MODE_PRIVATE;返回值為SharedPreferences。

(2)通過函數(shù)Activity.getPreferences(int mode),其中配置文件僅可以被調(diào)用的Activity使用。mode為操作模式,默認的模式為0或MODE_PRIVATE;返回值為SharedPreferences。

二、使用SharedPreferences存取數(shù)據(jù)

保存key-value對一般要指定一個文件名,然后用類似putString的方法指定key和value。SharedPreferences也采用了同樣的方法。使用SharedPreferences保存key-value對的步驟如下:

(1) 使用Activity類的getSharedPreferences方法獲得SharedPreferences對象。其中存儲key-value的文件名的名稱由getSharedPreferences方法的第一個參數(shù)指定。

(2) 使用SharedPreferences接口的edit獲得SharedPreferences.Editor對象。

(3) 通過SharedPreferences.Editor接口的putXXX方法保存key-value對。其中XXX表示value的不同數(shù)據(jù)類型。Boolean類型的value則是用putBoolean方法,字符串類型的則為putString方法。

(4) 通過SharedPreferences.Editor接口的commit方法保存key-value對。Commit方法相當于數(shù)據(jù)庫事務(wù)中的提交(commit)操作。只有在事件結(jié)束后進行提交,才會將數(shù)據(jù)真正保存在數(shù)據(jù)庫中。保存key-value也是一樣。

三、數(shù)據(jù)的存儲位置和格式

SharedPreferences將數(shù)據(jù)文件寫在手機內(nèi)存私有的目錄中。在模擬器中測試程序可以通過ADT的DDMS透視圖來查看數(shù)據(jù)文件的位置。

四、保存較為復(fù)雜的類型的數(shù)據(jù)

前面介紹的SharedPreferences只能保存簡單類型的數(shù)據(jù),例如,string,int等。如果需要存取比較復(fù)雜的數(shù)據(jù)類型比如類或者圖像,則需要對這些數(shù)據(jù)進行編碼,通常將其轉(zhuǎn)換成Base64編碼,然后將轉(zhuǎn)換后的數(shù)據(jù)以字符串的形式保存在XML文件中。

五、設(shè)置數(shù)據(jù)文件的訪問權(quán)限

因為Android系統(tǒng)并不是完全的創(chuàng)新的操作系統(tǒng),而是在linux內(nèi)核基礎(chǔ)上發(fā)展起來的一個移動操作系統(tǒng),所以android還有一些linux的基本特性。我們用getsharedPreferences方法獲得sharedpreferences對象,getsharedPreferences方法的第2個參數(shù)值使用到了Activity.MODE_PRIVATE常量。除了這個常量以外還可以使用另外3個常量。這4個常量用于指定文件的建立模式。他們一個重要的功能就是設(shè)置文件的屬性,從而可以設(shè)置數(shù)據(jù)文件的訪問權(quán)限。

六、可以保存設(shè)置的Activity:PreferenceActivity

由于SharedPreferences可以很容易的保存key-value對,因此,通常使用SharedPreferences保存配置信息。不過Android SDK提供了更為容易的方法來設(shè)計配置界面,并且可以透明地保存配置信息。這就是PreferenceActivity。

PreferenceActivity是Activity的子類,該類封裝了SharedPreferences。因此,PreferenceActivity的所有子類都擁有保存key-value對的能力。

PreferenceActivity提供了一些常用的設(shè)置項,這些設(shè)置項可以滿足大多數(shù)的配置界面的要求。與組件一樣,這些配置項既可以從XML文件創(chuàng)建,也可以從代碼創(chuàng)建。比較常用的有:

CheckboxPreference:對應(yīng)標簽。該設(shè)置項會創(chuàng)建一個CheckBox組件。
EditTextPreference:對應(yīng)標簽。單擊該設(shè)置項會彈出一個帶EditText組件的對話框。
ListPreference:對應(yīng)標簽。單擊該設(shè)置項會彈出帶ListView組件的對話框。


示例
先上圖:

2016412170632917.gif (367×154)

然后是main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:orientation="vertical" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  > 
<TextView  
  android:layout_width="fill_parent"  
  android:layout_height="wrap_content"  
  android:id="@+id/textView" 
  /> 
</LinearLayout> 

activity的代碼:

package cn.com.sharedPreferencesTest; 
 
import android.app.Activity; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 
 
public class SharedPreferencesActivity extends Activity { 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    saveSharedPreferences(); 
    readSharedPreferences(); 
     
  } 
   
  /** 
   * @description 創(chuàng)建并保存一些設(shè)置信息 
   */ 
  private void saveSharedPreferences(){ 
    /* 
     * getSharedPreferences(String name,int mode)方法是在Context中定義的抽象方法,在ContextWrapper中進行了具體實現(xiàn), 
     * 該方法會根據(jù)用戶傳遞的名稱和寫入類型創(chuàng)建一個SharedPreferences對象進行返回。 
     * 在Activity中,還有一個方法可以回去SharedPreferences對象,這個方法就是SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
     * 改方法在Activity中定義并實現(xiàn),這里沒有name參數(shù)是因為該方法默認將當前Activity的類名作為name屬性(這里的類名并不包含包路徑哦) 
     * */ 
    SharedPreferences sharedPreferences = getSharedPreferences("preferences", MODE_PRIVATE); 
     
    //存儲數(shù)據(jù) 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString("name", "蔡依林"); 
    editor.putInt("age", 31); 
    Boolean b = editor.commit(); 
     
    if(b){ 
      Log.i("通知:", "保存成功!"); 
    }else{ 
      Log.i("通知", "保存失敗!"); 
    } 
     
  } 
   
  /** 
   * @author chenzheng_java 
   * @description 讀取我們添加到SharedPreference對象中的數(shù)據(jù) 
   * @since 2011/03/05 
   */ 
  private void readSharedPreferences(){ 
    String result = "美女信息:/n" ; 
    SharedPreferences sharedPreferences = this.getSharedPreferences("preferences", MODE_PRIVATE); 
    result+=" 姓名 "+sharedPreferences.getString("name", "暫時沒有人"); 
    result+=" 年齡"+sharedPreferences.getInt("age", -1); 
    TextView textView = (TextView)findViewById(R.id.textView); 
    textView.setText(result); 
     
  } 
   
   
} 

其他的都為默認。

相關(guān)文章

最新評論

井研县| 淮阳县| 宜兰市| 延安市| 瑞丽市| 焦作市| 务川| 牡丹江市| 贡嘎县| 达拉特旗| 盐边县| 福海县| 阿拉善右旗| 崇左市| 洛浦县| 平顺县| 嵊泗县| 封开县| 巫山县| 凤冈县| 桐梓县| 金堂县| 珠海市| 炉霍县| 五华县| 伊川县| 江山市| 九台市| 宁蒗| 莎车县| 庄浪县| 尼玛县| 汝阳县| 天台县| 教育| 楚雄市| 凤翔县| 榆林市| 安龙县| 团风县| 娱乐|