通过GSON为SharedPreferences保存ImageView?

时间:2014-02-04 13:41:02

标签: android sharedpreferences gson

我想通过gson:

在共享首选项中保存一个对象(MyObject类型)

PS:store and retrieve a class object in shared preference

因此,MyObject中的一个字段是从网址获取的ImageView。

现在我做的时候:

String json = gson.toJson(myObject);

我收到stackoverflow错误。当我从MyObject POJO注释掉ImageView时,这个错误就会得到解决。

Q1-只有8-10张图片。那么如何通过gson存储它们呢?

Q2-通过gson存储图像是一种很好的做法,如果不是这样,那么我有更好的选择吗?

我认为错误是由于将ImageView转换为字符串。

1 个答案:

答案 0 :(得分:1)

您可以在gson / sharedpreferences中存储可以转换为字符串或数字(long,int ...)的数据。

你不能,你不应该存储ImageView,因为它是一个UI对象,用于在Android布局中显示图像。

话虽如此,尝试将您的实际图片保存到属于您的应用的私人目录,而不是此。

try {
   Bitmap bmp = yourImageView.getDrawingCache();
   FileOutputStream out = new FileOutputStream(pathToOutputFile);
   bmp.compress(Bitmap.CompressFormat.PNG, 100, out);
   out.close();
  } catch (Exception e) {
   e.printStackTrace();
  }

有关android中存储的更多信息:Storage Guide