1、SharedPreferences是什麼?
數據持久化
2、SharedPreferences適用於哪些地方?
保存比較簡單的數據
代碼裏的全局變量、局部變量是放在內存裏的,當頁面被關閉後,內存就被釋放了,全局變量、局部變量值被銷燬了;所以有時我們需要保存一些數據,下次再讀取ta,比如登錄信息。
快捷鍵:提取爲方法 command+option+m;
保存數據:
/*
* 保存數據
* */
private void saveData2Preferences() {
//系統會自動創建xml文件,文件名preference_name;
//1、打開Preferences,名稱爲preference_name,如果存在則打開它,否則創建新的Preferences
SharedPreferences sharedPreferences = getSharedPreferences("preference_name",MODE_PRIVATE);
//2、讓preference_name處於編輯狀態
SharedPreferences.Editor editor = sharedPreferences.edit();
//3、存放數據
editor.putString(TEXT_VIEW_DATA,mDataString);
//4、完成提交
editor.apply();
}
以上,可以將數據保存到文件名爲preference_name裏,文件在data/data/包名/,目錄下;終端命令查看文件:
adb shell
cd data/data/
cd com.example.chenjinhua.sharedpreferences
vi 文件名
退出vi命令:按Esc,然後 :q! 讀取數據
/*
* 讀取數據
* */
private void setData() {
//1、獲取Preferences
SharedPreferences sharedPreferences = getSharedPreferences("preference_name",MODE_PRIVATE);
//2、取出數據
mDataString = sharedPreferences.getString(TEXT_VIEW_DATA,"10");
mEditText_data.setText(mDataString);
mTextView_second.setText(mDataString);
}
完整的代碼爲:
package com.example.chenjinhua.sharepreferences;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
/**
* Created by chenjinhua on 16/3/30.
*/
public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
public static final String TEXT_VIEW_DATA = "textView_data";
private EditText mEditText_data;
private TextView mTextView_second;
private Button mButton_confirm;
private String mDataString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_shareprefs_textview);
Log.i("MainActivity", "SecondActivity");
findViews();
mButton_confirm.setOnClickListener(this);
setData();
}
/*
* 讀取數據
* */
private void setData() {
SharedPreferences sharedPreferences = getSharedPreferences("preference_name",MODE_PRIVATE);
mDataString = sharedPreferences.getString(TEXT_VIEW_DATA,"10");
mEditText_data.setText(mDataString);
mTextView_second.setText(mDataString);
}
private void findViews() {
mEditText_data = (EditText) findViewById(R.id.editText_data);
mButton_confirm = (Button) findViewById(R.id.button_confirm);
mTextView_second = (TextView) findViewById(R.id.textView_second);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.button_confirm:
mDataString = mEditText_data.getText().toString();
mTextView_second.setText(mDataString);
saveData2Preferences();
break;
}
}
/*
* 保存數據
* */
private void saveData2Preferences() {
//系統會自動創建xml文件,文件名preference_name,
SharedPreferences sharedPreferences = getSharedPreferences("preference_name",MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(TEXT_VIEW_DATA,mDataString);
editor.apply();
}
}
如何創建?
如何保存?
如何修改?
修改就是再put一次,給同樣的key不同的value,如下
editor.putString(TEXT_VIEW_DATA,value1);
editor.putString(TEXT_VIEW_DATA,value2);
如何刪除?
editor.remove(xxx); //刪除key爲xxx對應的值
注意:
editor.commit(); //同步寫數據
editor.apply();
//1、另開一個線程,異步寫數據,不會佔用UI線程;2、和網絡相關、IO操作相關,都要用異步。
原理
在data/data/文件夾裏寫了一個文件。
如何封裝成一個能用的類?
如何清除緩存?
adb clear
練習:
做一個小應用,啓動時有2張引導界面,只有第一次啓動時顯示,下一次啓動不會顯示。