SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,不能存储大量数据。
SharedPreferences存储到一个XML文件中的,文件路径在/data/data/"packagename"/shared_prefs下
词典
1、键值对(Key-Value):key 是索引,value 是数据。
使用步骤:
1、声明并获取对象
使用getSharedPreferences(String name, int mode)函数获取SharedPreferences对象,其中第一个参数name指定了SharedPreferences存储的XML文件的文件名,已经存在同名文件则获取,不存在则创建一个新的,MODE为模式,一般用MODE_PRIVATE私有方式存储,其他应用无法访问。
private SharedPreferences.Editor mEditor;
..............
mSharedPreferences=getSharedPreferences("data",MODE_PRIVATE);
2、获取SharedPreference.Editor对象
需要通过SharedPreference.Editor对象获取参数,通过mSharedPreferences.edit()获取。
private SharedPreferences.Editor mEditor;
................
mEditor=mSharedPreferences.edit();
3、写入数据
只能存放Boolean,Float,Int,Long,String 五种类型的数据。
一定要在后面接上editor.commit()或者editor.apply()提交数据。
附:commit()和apply()区别:
apply()立即更改内存中的SharedPreferences对象,但异步地将更新写入磁盘。commit()同步地将数据写入磁盘。
mEditor.putString("name","要写入的数据");
mEditor.apply();
4、获取数据
可通过mSharedPreferences.getString("name","")获取。
完整代码如下
package com.example.helloworld;
import androidx.appcompat.app.AppCompatActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class SharedPreferencesActivity extends AppCompatActivity {
private EditText mEtName;
private Button mBtnSave,mBtnShow;
private TextView mTvContent;
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shared_preferences);
mEtName=findViewById(R.id.et_name);
mBtnSave=findViewById(R.id.btn_save);
mBtnShow=findViewById(R.id.btn_show);
mTvContent=findViewById(R.id.tv_content);
mSharedPreferences=getSharedPreferences("data",MODE_PRIVATE);
mEditor=mSharedPreferences.edit();
mBtnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor.putString("name",mEtName.getText().toString());
mEditor.apply();
}
});
mBtnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mTvContent.setText(mSharedPreferences.getString("name",""));
}
});
}
}