这几年经历了太多事情,决定回归技术,深耕一下,这次要有深度+数学
一般的App都需要使用外存存储一些用户的信息,如用户名,密码,是否登录,token等来判断用户是否需要重新登录,这里提供一种方式,本地存储配置文件的方式
Android的工具类SharedPreferences,这个类本质是个接口类,对应底层文件读写,故内部没有实现
为了方便不用每次都写一下这个类,我准备直接封装一个自己的配置文件读写类MSharedPreferences,实现如下,内部使用静态方法和类定义,方便直接获取
代码如下:
/**
* Created by Administrator on 2021/9/27.
*/
public class MSharedPreferences {
private static MSharedPreferences mSharedPreferences;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
private Context context;
private String str;
public static MSharedPreferences getmSharedPreferences() {
if (mSharedPreferences == null) {
mSharedPreferences = new MSharedPreferences();
}
return mSharedPreferences;
}
/**
* 不需要
* @param context
*/
public void init(Context context){
sharedPreferences = context.getSharedPreferences(MyConfig.APP_CONF, Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
/**
*
* @param context
*/
public void delete(Context context) {
str = context.getPackageName();
Log.e("guanzedong", str);
//这里实质上只是创建了个实例,并不是个文件
// file.createNewFile();当且仅当文件不存在时创建,否则会抛出异常
//public boolean createNewFile() throws IOException
File file = new File("/data/data/" + context.getPackageName().toString() + "/shared_prefs", MyConfig.APP_CONF);
if(file.exists()){
file.delete();
Toast.makeText(context, "删除配置文件成功!!!", Toast.LENGTH_SHORT).show();
}
}
public void clear(Context context){
if(editor != null){
editor.clear().commit();
Toast.makeText(context, "你好", Toast.LENGTH_SHORT).show();
}
}
public void putString(String key, String value){
editor.putString(key,value);
}
public void putInt(String key, int value){
editor.putInt(key,value);
}
public void putLong(String key, long value){editor.putLong(key,value);}
public void putDouble(String key, double value){editor.putFloat(key, (float) value);}
public void putBoolean(String key, boolean value){editor.putBoolean(key,value);}
public void commit(){
editor.commit();
}
public String getString(String key){
return sharedPreferences.getString(key,"");
}
public int getInt(String key){return sharedPreferences.getInt(key,-1); }
public long getLong(String key){return sharedPreferences.getLong(key,0);}
public float getFloat(String key){return sharedPreferences.getFloat(key,0);}
public boolean getBoolean(String key){return sharedPreferences.getBoolean(key,false);}
}
实现自己的配置文件读写类之后,直接在界面内直接调用即可
mSharedPreferences = MSharedPreferences.getmSharedPreferences();
mSharedPreferences.init(this);
mSharedPreferences.clear(this);
进行读取操作即可
/**
*读取操作
*/
MyConfig.sellername = mSharedPreferences.getString(MyConfig.SELLERNAME);
MyConfig.sellerpwd = mSharedPreferences.getString(MyConfig.PASSWORD);
MyConfig.is_login = mSharedPreferences.getBoolean(MyConfig.IS_LOGIN);
/**
*写入操作,记得commit一下
*/
mSharedPreferences.putString(MyConfig.SELLERNAME, MyConfig.sellername);
mSharedPreferences.putString(MyConfig.PASSWORD, MyConfig.sellerpwd);
mSharedPreferences.putBoolean(MyConfig.IS_LOGIN, MyConfig.is_login);
mSharedPreferences.commit();