1. 保存简单的数据
2. getPreferences 保存,内部文件名称默认为 MainActivity.xml,跟类名保存一致
//getPreferences
private void testGetPreferences() {
SharedPreferences shp = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = shp.edit();
editor.putInt("NUMBER", 200);
editor.apply();
int x = shp.getInt("NUMBER", 0);
Log.i(TAG, "onCreate: " + x);
}
3. getSharedPreferences 保存,内部文件名称为 MY_DATA.xml
//getSharedPreferences
private void testGetSharedPreferences() {
SharedPreferences shp = getSharedPreferences("MY_DATA", MODE_PRIVATE);
SharedPreferences.Editor editor = shp.edit();
editor.putInt("NUMBER", 1990);
editor.apply();
int x = shp.getInt("NUMBER", 0);
Log.i(TAG, "onCreate: " + x);
}
4. 简单类的封装
public class MyData {
private Context context;
MyData(Context context) {
this.context = context;
}
public void save(int value) {
String name = context.getResources().getString(R.string.my_data);
SharedPreferences sp = context.getSharedPreferences(name, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
String myKey = context.getResources().getString(R.string.my_key);
editor.putInt(myKey, value);
editor.apply();
}
public int load() {
String name = context.getResources().getString(R.string.my_data);
SharedPreferences sp = context.getSharedPreferences(name, Context.MODE_PRIVATE);
String myKey = context.getResources().getString(R.string.my_key);
return sp.getInt(myKey, context.getResources().getInteger(R.integer.def_value));
}
}
5. 引用资源文件
<string name="my_data">my_data</string>
<string name="my_key">my_key</string>
<integer name="def_value">0</integer>
6. 调用测试
public class MainActivity extends AppCompatActivity {
private String TAG = "MyTag";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyData myData = new MyData(getApplicationContext());//不能传递this //Activity 销毁,造成内存泄露
myData.save(123321);
int number = myData.load();
Log.i(TAG, "number: " + number);
}
}