本文是以Android Studio為開發(fā)工具针肥,<<第一行代碼Anroid第2版>> 為學(xué)習(xí)指導(dǎo)書籍的學(xué)習(xí)記錄
6.3 SharedPreferences存儲(chǔ)
1轰豆、不同于文件的存儲(chǔ)方式赴叹,SharedPreferences是使用==鍵值對(duì)==的方式來(lái)存儲(chǔ)數(shù)據(jù)的兵扬。即口蝠、當(dāng)你保存了一條數(shù)據(jù)的時(shí)候器钟,需要給這條數(shù)據(jù)提供對(duì)應(yīng)的一個(gè)鍵,這樣在讀取數(shù)據(jù)的時(shí)候就可以通過(guò)這個(gè)“鍵“ 把存進(jìn)去的“值”取出來(lái)妙蔗。
2、SharedPreferences支持多種不同的數(shù)據(jù)類型存儲(chǔ)昙啄,如果存進(jìn)去的是整型,那么讀取出來(lái)的也是整型寸五。
6.3.1 將數(shù)據(jù)存儲(chǔ)到SharedPreferences中
要使用SharedPreferences來(lái)存儲(chǔ)數(shù)據(jù)跟衅,在先獲取到SharedPreferences對(duì)象。Android中主要是提供了3種方法用于得到SharedPreferences對(duì)象播歼。
1秘狞、Context類中的getSharedPreferences()方法
-參數(shù)傳文件名和操作模式(MODE_PRIVATE)兩個(gè)參數(shù)
2、Activity類中的getPreferences()方法
-傳一個(gè)參數(shù)烁试,只用傳操作模式(MODE_PRIVATE)文件名會(huì)默認(rèn)為當(dāng)前活到的類名
3、PreferenceManager類中的getDeafultSharedPreferences()方法
存儲(chǔ)流程
(1)調(diào)用SharedPreferences對(duì)象的edit()方法獲取一個(gè)SharedPreferences.Editor對(duì)象
(2)向?qū)ο筇砑訑?shù)據(jù)靖诗,如添加一個(gè)布爾型數(shù)據(jù)使用putBoolean()方法,添加一個(gè)字符串則使用putString()方法刊橘。
(3)調(diào)用apply()方法將添加的數(shù)據(jù)提交颂鸿。
新一個(gè)SharedPreferencesTes項(xiàng)目
修改activity_main.xml中的代碼如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/save_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="save data"/>
</LinearLayout>
截圖如下:
修改MainActivity中的代碼如下:
package com.zyf.android.sharedpreferencestest;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button saveData = (Button) findViewById(R.id.save_data);
saveData.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
SharedPreferences.Editor editor = getSharedPreferences("data2",MODE_PRIVATE).edit();
editor.putString("Name","Tom");
editor.putInt("age",28);
editor.putBoolean("married",false);
editor.apply();
}
});
}
}
截圖如下:
運(yùn)行代碼败晴,查看/data/date/<pageage name>/shared_prefs目錄如下
運(yùn)行效果圖
6.3.2 從SharedPreferences中讀取數(shù)據(jù)
通過(guò)getSharedPreferences方法得到一個(gè)SharePreferences對(duì)象,然后調(diào)用對(duì)象的getString(),getInt(),getBoolean()方法來(lái)拿到對(duì)應(yīng)的值稳懒,然后打log出來(lái)慢味。
修改activity_main.xml中的代碼如下;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/save_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="save data"/>
<Button
android:id="@+id/restore_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Restore data"/>
</LinearLayout>
載圖如下:
修改MainActivity中的代碼如下:
package com.zyf.android.sharedpreferencestest;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button saveData = (Button) findViewById(R.id.save_data);
saveData.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
SharedPreferences.Editor editor = getSharedPreferences("data2",MODE_PRIVATE).edit();
editor.putString("Name","Tom");
editor.putInt("age",28);
editor.putBoolean("married",false);
editor.apply();
}
});
Button resoterData = (Button) findViewById(R.id.restore_data);
resoterData.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
SharedPreferences pref = getSharedPreferences("data2",MODE_PRIVATE);
String name = pref.getString("Name","");
int age = pref.getInt("age",0);
boolean married = pref.getBoolean("married",false);
Log.i("show_mainActivity_log","name is " + name);
Log.i("show_mainActivity_log","age is " + age);
Log.i("show_mainActivity_log","married is " + married);
}
});
}
}
截圖如下(運(yùn)行后的代碼有l(wèi)og ):
寫在最后
本示例源碼下載百度云地址
- 數(shù)據(jù)庫(kù)存儲(chǔ)。還在學(xué)習(xí)俺榆,稍后更新,敬請(qǐng)期侍定嗓!互勉F甲馈(關(guān)注持續(xù)更新)
個(gè)人github博客地址:
zhangyongfeng"s blogs