SharedPreferences
來源:程序員人生 發布時間:2015-03-13 08:12:13 閱讀次數:3462次
SharedPreferences
SharedPreferences:利用程序有時需要保存少許的數據,如各種配置信息(聲音的開關,震動效果的開關等)的存儲,這個時候啟用數據庫有點夸大,安卓提供了SharedPreferences進行保存。
SharedPreferences保存的數據主要是類似于key-value鍵值對。其提供的主要接口是負責讀取利用程序的Preferences數據,經常使用方法有以下:
- boolean contains(String key):判斷SharedPreferences是不是包括特定的key數據。
- abstract Map<String,?> getAll():獲得SharedPreferences數據里全部的ket-value對。
- boolean getXxx(String key, xxx defValue):獲得SharedPreferences數據里指定的key對應的value.如果key不存在,則返回默許值defValue.其中的xxx可以是boolean,float,int,long,String等各種基本類型的值。
SharedPreferences依托內部的接口,才能夠寫入數據,調用edit()方法便可獲得所對應的Editor對象。Editor提供了下面幾種方法來向SharedPreferences寫入數據:
- SharedPreferences.Editor clear(): 清空SharedPreferences里所有數據。
- ShraedPreferences.Editor putXxx(String key, Xxx value): 向SharedPreferences存入指定了key的數據value,value的類型可以是boolean,float,int,long,String等。
- SharedPreferences.Editor remove(String key): 刪除 Sharedpreferences里指定key對應的數據。
- boolean commit(): 當Editor編輯完成后,調用該方法提交修改。
ShraedPreferences本身是1個接口,程序沒法直接創建SharedPreferences實例,只能通過Context提供的getShraedPreferences(String name, int mode)方法來獲得SharedPreferences實例。關于第2個參數mode有1下3種值:
- Context.MODE_PRIVATE: 指定該SharedPreferences數據只能被本利用讀寫。
- Context.MODE_WORLD_READABLE: 指定該SharedPreferences數據能被其他利用程序讀,但是不能寫入。
- Context.MODE_WORLD_WRITABLE: ShraedPreferences數據能被其他利用讀寫。
下面用1個小例子來演示下如何進行讀寫SharedPreferences數據:
public class MainActivity extends Activity {
private Button write;
private Button read;
private SharedPreferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
write = (Button) findViewById(R.id.write);
read = (Button) findViewById(R.id.read);
preferences = getSharedPreferences("count",MODE_PRIVATE);
//讀取SharedsPreferences里的count數據
int count = preferences.getInt("count",0);
Toast.makeText(this,"程序之前被使用了" + count + "次。 ", Toast.LENGTH_LONG).show();
//獲得到SharedPreferences的editor,用來進行寫入數據
SharedPreferences.Editor editor = preferences.edit();
//存入數據
editor.putInt("count",++count);
//提交修改
editor.commit();
}
}
上面這個例子只是在本利用里面使用ShraedPreferences,如果要讀寫其他利用的ShraedPreferences,首先要被訪問的利用在創建的時候指定了相應的訪問權限,也就是上面提到的3種權限。
為了讀取到其他利用程序的SharedPreferences數據,可以依照下面3個步驟來進行:
先創建其他利用對應的Context,例如:
Context context = createPackageContext("com.dada.example",Context.CONTEXT_IGNORE_SECURITY);
上面的com.dada.example就是利用程序的包名,通過這個我們可以找到相應的利用程序。
調用獲得到的COntext的getShraedPreferences(String name, int mode)便可獲得到相應的ShraedPreferences對象。
再根據SharedPreferences提供的edit()方法來獲得到響應的Editor,便可向ShraedPreferences中寫入數據了。
現在在剛才已有的基礎上,再創建1個利用程序,讀取上1個利用的ShraedPreferneces中的數據。
public class MainActivity extends ActionBarActivity {
private Button write;
private Button read;
private int count;
private SharedPreferences preferences;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
write = (Button) findViewById(R.id.write);
read = (Button) findViewById(R.id.read);
Context myApplication = null;
try{
myApplication = createPackageContext("com.example.pc.myapplication",Context.CONTEXT_IGNORE_SECURITY);
preferences = myApplication.getSharedPreferences("count",Context.MODE_WORLD_WRITEABLE);
editor = preferences.edit();
}
catch (Exception e){
e.printStackTrace();
}
write.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editor.putInt("count",++count);
}
});
read.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count = preferences.getInt("count",0);
Toast.makeText(getApplicationContext(),"count的值為" + count,Toast.LENGTH_LONG).show();
}
});
}
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈