Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android之SharedPreferences詳解

Android之SharedPreferences詳解

編輯:關於android開發

Android之SharedPreferences詳解


SharedPreferences是Android中最容易理解的數據存儲技術,實際上SharedPreferences處理的就是一個key-value(鍵值對)SharedPreferences常用來存儲一些輕量級的數據。

1、使用SharedPreferences保存數據方法如下:

//實例化SharedPreferences對象(第一步) 
SharedPreferences mySharedPreferences= getSharedPreferences("test", 
Activity.MODE_PRIVATE); 
//實例化SharedPreferences.Editor對象(第二步) 
SharedPreferences.Editor editor = mySharedPreferences.edit(); 
//用putString的方法保存數據 
editor.putString("name", "Karl"); 
editor.putString("habit", "sleep"); 
//提交當前數據 
editor.commit(); 
//使用toast信息提示框提示成功寫入數據 
Toast.makeText(this, "數據成功寫入SharedPreferences!" , Toast.LENGTH_LONG).show();
2、使用SharedPreferences讀取數據方法如下:

 

//同樣,在讀取SharedPreferences數據前要實例化出一個SharedPreferences對象 
SharedPreferencessharedPreferences= getSharedPreferences("test", 
Activity.MODE_PRIVATE); 
// 使用getString方法獲得value,注意第2個參數是value的默認值 
String name =sharedPreferences.getString("name", ""); 
String habit =sharedPreferences.getString("habit", ""); 
//使用toast信息提示框顯示信息 
Toast.makeText(this, "讀取數據如下:"+"\n"+"name:" + name + "\n" + "habit:" + habit, 
Toast.LENGTH_LONG).show(); 

 

3、SharedPreferences的四種操作模式: Context.MODE_PRIVATE Context.MODE_APPEND Context.MODE_WORLD_READABLE Context.MODE_WORLD_WRITEABLE   Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容 Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件. Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有權限讀寫該文件. MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取. MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入.

 

很多時候我們開發的軟件需要向用戶提供軟件參數設置功能,例如我們常用的QQ,用戶可以設置是否允許陌生人添加自己為好友。對於軟件配置參數的保存,如果是window軟件通常我們會采用ini文件進行保存,如果是j2se應用,我們會采用properties屬性文件或者xml進行保存。如果是Android應用,我們最適合采用什麼方式保存軟件配置參數呢?Android平台給我們提供了一個SharedPreferences類,它是一個輕量級的存儲類,特別適合用於保存軟件配置參數。使用SharedPreferences保存數據,其背後是用xml文件存放數據,文件存放在/data/data//shared_prefs目錄下:

 

SharedPreferences sharedPreferences = getSharedPreferences("ljq", Context.MODE_PRIVATE);

Editor editor = sharedPreferences.edit();//獲取編輯器

editor.putString("name", "林計欽");

editor.putInt("age", 24);

editor.commit();//提交修改

生成的ljq.xml文件內容如下:

 

 

 

林計欽

 

因為SharedPreferences背後是使用xml文件保存數據,getSharedPreferences(name,mode)方法的第一個參數用於指定該文件的名稱,名稱不用帶後綴,後綴會由Android自動加上。方法的第二個參數指定文件的操作模式,共有四種操作模式,這四種模式前面介紹使用文件方式保存數據時已經講解過。如果希望SharedPreferences背後使用的xml文件能被其他應用讀和寫,可以指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權限。

另外Activity還提供了另一個getPreferences(mode)方法操作SharedPreferences,這個方法默認使用當前類不帶包名的類名作為文件的名稱。

訪問SharedPreferences中的數據

如果訪問其他應用中的Preference,前提條件是:該preference創建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE權限。

如:有個為com.ljq.action的應用使用下面語句創建了preference。

getSharedPreferences("ljq", Context.MODE_WORLD_READABLE);

其他應用要訪問上面應用的preference,首先需要創建上面應用的Context,然後通過Context 訪問preference ,訪問preference時會在應用所在包下的shared_prefs目錄找到preference :

Context otherAppsContext = createPackageContext("com.ljq.action", Context.CONTEXT_IGNORE_SECURITY);

SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences("ljq", Context.MODE_WORLD_READABLE);

String name = sharedPreferences.getString("name", "");

int age = sharedPreferences.getInt("age", 0);

如果不通過創建Context訪問其他應用的preference,也可以以讀取xml文件方式直接訪問其他應用preference對應的xml文件,如:

File xmlFile = new File("/data/data//shared_prefs/itcast.xml");//應替換成應用的包名



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved