Android(java)學習筆記117:SharedPreferences(輕量級存儲類)

1.SharedPreferences是Android平臺上一個輕量級的存儲類,簡單的說就是能夠存儲一些咱們須要的變量信息。2個activity 之間的數據傳遞除了能夠他經過intent來傳遞數據,還能夠使用SharedPreferences來共享數據的方式。SharedPreferences生成的是xml文件android

    SharedPreferences 用法很簡單,若是你想要編輯SharedPreferences中的內容就須要用到Editor對象shell

 

2.下面使用一個案例來進一步理解SharedPreferencesEditor數據庫

(1)下面以一個登錄界面的設計爲例,分析其和SharedPreferences有關代碼,設計簡單的界面以下圖所示。api

 

(2)下面這個方法能夠實現保存用戶名和密碼,數據存放很像Map集合,以鍵值對的方式存放。關鍵代碼:app

  SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE)其中"config"文件名(能夠本身命名),MODE_PRIVATE爲文件的權限(這裏是私有文件);編輯器

  Editor editor = sp.edit()得到編輯這個文件的編輯器;  ide

  editor.putString("username", str_username);利用編輯器編輯內容;this

  editor.commit()調用這個方法提交保存數據。spa

 

附加備註:設計

Context.MODE_PRIVATE爲默認操做模式,表明該文件是私有數據,只能被應用自己訪問,在該模式下,寫入的內容會覆蓋原文件的內容,若是想把新寫入的內容追加到原文件中。可使用Context.MODE_APPEND

Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,不然就建立新文件

 

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其餘應用是否有權限讀寫該文件。

MODE_WORLD_READABLE:表示當前文件能夠被其餘應用讀取

MODE_WORLD_WRITEABLE:表示當前文件能夠被其餘應用寫入

 

(3)下面這個方法能夠實現讀取出存放的數據,經過鍵獲得值,而且知道填充到對應的編輯框。關鍵代碼只有兩句:

SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE)其中"config"文件名MODE_PRIVATE爲文件的權限

String str_username = sp.getString("username", "")和String str_password = sp.getString("password", "")都是取出對應的數據

(4)分析:建立對象時有到getSharedPreferences(name, mode)方法,參數name實際上是文件名,mode實際上是文件權限。這個文件是自動生成的一個xml文件:

 

(5)能夠打開這個xml文件文件,或者有adb shell cat查看這個文件內容,可見用這種方法特殊字符也是能夠存放的。

 3. SharedPreferences使用步驟
>用來保存用戶的配置信息和簡單的數據步驟
        1. 聲明 SharedPreferences sp; 
        2. 初始化 sp = this.getSharedPreferences("文件名", 0);//0表明的是私有
        3. 獲取sp的編輯器 Editor editor = sp.edit();
        4. 存儲數據 editer.putString() putBoolean putLong
        5. 最後一步重要,必定要記得commit() 數據才被保存

代碼案例:
package com.itheima.setting; import android.os.Bundle; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.view.Menu; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.Toast; public class MainActivity extends Activity { //方便的數據保存的api 生成一個xml文件用來保存數據
 SharedPreferences sp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //config 是文件名 0 訪問模式私有
        sp = this.getSharedPreferences("config", 0); CheckBox cb = (CheckBox) findViewById(R.id.cb); //回顯數據
        boolean status = sp.getBoolean("status", false);//第一個是key 第二個參數是默認值
 cb.setChecked(status); cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { Toast.makeText(MainActivity.this, "勾選狀態:"+isChecked, 0).show(); //獲取編輯器i
                Editor editor = sp.edit(); editor.putBoolean("status", isChecked); editor.commit();//數據庫的事務 ,提交數據。把數據保存起來
 } }); } }
相關文章
相關標籤/搜索