轻量级存储 就是把数据保存在系统里面 但是APP被卸载了 这些数据也就没有了
简单的一两个缓存数据
// 存储数据到缓存 塞入要保存的字符串
public void SharedPreferences_data(String data) {
SharedPreferences preferences = getSharedPreferences("user", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(data, data); //这里的两个参数 后者是存储下来的值 前者是一个标记 存储到内存当中的标记 根据这个可以提取出内容
editor.commit();
}
// 读取缓存数据
public String extract() {
SharedPreferences preferences = getSharedPreferences("user", Context.MODE_PRIVATE);
String data = preferences.getString("data", "null");
return data;
}
存储数组
就是把数据转成String 来存 取出来的时候 转一下就好
//写入
List StringData = new ArrayList<>();
for (int i = 0; i < 50; i++) {
StringData.add(i + "");
}
String data = JsonUtil.toJson(StringData);
SharedPreferences preferences = getSharedPreferences("user", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("dataList", data);
editor.commit();
读取数组
String name = preferences.getString("dataList", "没有内容");// 第二个参数是 没有数据的时候返回的内容
图片缓存 这个比较特殊
//图片存储
private void saveBitmapToSharedPreferences(Bitmap bitmap){
// Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
//第一步:将Bitmap压缩至字节数组输出流ByteArrayOutputStream
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 80, byteArrayOutputStream);
//第二步:利用Base64将字节数组输出流中的数据转换成字符串String
byte[] byteArray=byteArrayOutputStream.toByteArray();
String imageString=new String(Base64.encodeToString(byteArray, Base64.DEFAULT));
//第三步:将String保持至SharedPreferences
SharedPreferences sharedPreferences=getSharedPreferences("testSP", Context.MODE_PRIVATE);
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putString("image", imageString);
editor.commit();
}
// 拿 图片缓存
private void getBitmapFromSharedPreferences(){
SharedPreferences sharedPreferences= getSharedPreferences("testSP", Context.MODE_PRIVATE);
//第一步:取出字符串形式的Bitmap
String imageString=sharedPreferences.getString("image", "");
//第二步:利用Base64将字符串转换为ByteArrayInputStream
byte[] byteArray=Base64.decode(imageString, Base64.DEFAULT);
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(byteArray);
//第三步:利用ByteArrayInputStream生成Bitmap
Bitmap bitmap=BitmapFactory.decodeStream(byteArrayInputStream);
if (bitmap == null) {
bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.portrait);
}else{
ivHead.setImageBitmap(bitmap);
}
}
附带一个 工具类吧
记得导包 compile 'com.google.code.gson:gson:2.7'
public class JsonUtil {
private static Gson gson = null;
static {
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(JsonObject.class, new JsonDeserializer
其实数据比较复杂的时候可以考虑搭一个本地数据库的
判断程序是否是第一次运行 可以这样写 也是用的这个缓存
SharedPreferences setting = getSharedPreferences(SHARE_APP_TAG, 0);
Boolean user_first = setting.getBoolean("FIRST",true);
if(user_first){//第一次
setting.edit().putBoolean("FIRST", false).commit();
Toast.makeText(MainActivity.this, "第一次", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(MainActivity.this, "不是第一次", Toast.LENGTH_LONG).show();
}