数据永久保存:SharedPreferences
1、创建一个类MyData,不在Activity里面访问SharedPreferences,需要传递一个Context参数:
public class MyData {
public int number;
private Context context;
public MyData(Context context){
this.context = context;
}
public void save(){
String name = context.getResources().getString(R.string.MY_DATA);
SharedPreferences shp = context.getSharedPreferences(name,Context.MODE_PRIVATE);
SharedPreferences.Editor editor = shp.edit();
String key = context.getResources().getString(R.string.MY_KEY);
editor.putInt(key,number);
editor.apply();
}
public int load(){
String name = context.getResources().getString(R.string.MY_DATA);
SharedPreferences shp = context.getSharedPreferences(name,Context.MODE_PRIVATE);
String key = context.getResources().getString(R.string.MY_KEY);
int x = shp.getInt(key,context.getResources().getInteger(R.integer.defValue));
number = x;
return x;
}
}
以上代码中的MY_DATA,MY_KEY都需要先在string.xlm当中创建:
<resources>
<string name="app_name">SharedPreferences</string>
<string name="MY_DATA">my_data</string>
<string name="MY_KEY">my_key</string>
</resources>
2、在mainactivity中实例化和绑定参数:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyData myData = new MyData(getApplicationContext());//不能传递this
myData.number = 1000;
myData.save();
int y = myData.load();
String TAG = "myLog";
Log.d(TAG, "onCreate: " + y);
}
}