在App中的很多地方都需要使用到数据信息,比如登陆保存的账号信息,一次计算的结果等等,通常为了避免Activity之间传递数据的开销,会将这些数据通过持久化来存储。
有时候我们会把数据放在全局Appcation中,其实,这种做法是错误的。当App处于后台时,出现了内存的时候。这个Appcation很可能会被后台杀掉,当你再次恢复这个应用时,系统又会重新为这个应用创建新的Appcation。而这个Appcation里面是没有保存数据的,所以会导致空指针异常。
为了应用能够更加稳定,我们很有必要使用持久化存储来把数据保存在本地。
封装SP的代码
public class SpUtils {
/**
* 保存变量
*
* @param context
* @param key
* @param obj
*/
public static void save(Context context, String key, Object obj) {
// sp
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
// 编辑器
Editor editor = sp.edit();
if (obj instanceof String) {
editor.putString(key, (String) obj);
} else if (obj instanceof Boolean) {
editor.putBoolean(key, (Boolean) obj);
}
editor.commit();// 保存
}
public static SharedPreferences get(Context context) {
// sp
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
return sp;
}
}