【发布时间】:2016-04-12 06:48:59
【问题描述】:
我正在开发一个 android 应用程序(第一个应用程序初学者),我正在尝试在应用程序关闭以再次加载时保存数据。
我要存储的数据是书籍列表,每本书都包含信息(作者、日期等)和包含书籍图片的位图。我尝试使用 GSON 将列表转换为 JSON 并存储在 SharedPreferences 中,但由于位图而导致问题。
我应该如何保存文件并在应用启动时再次检索它?
这是代码的简要版本
库类
public class Library {
private ArrayList<Entry> library ;
public Library () {
library = new ArrayList<Entry>();
}
public void addEntry( Entry entry ) {
library.add(entry);
}
public void removeEntry ( Entry entry ) {
if (library.contains(entry))
library.remove(entry);
else Log.d ( "Library" , "Entry Not Found");
}
public ArrayList<Entry> getLibrary() {
return library;
}
@Override
public String toString() {
return "Library{" +
"library=" + library +
'}';
}
}
入门类
public class Entry {
Book book ;
final LocalDate borrowDate;
LocalDate dueDate;
//some methods for application
}
图书课
public class Book implements Parcelable {
private String title;
private String author;
private String isbn ;
private double rating;
private int ratingCount;
private int pageCount;
private transient Bitmap image;
private String overview;
//some methods
}
【问题讨论】:
-
请注意,我使用 Parcelable 在活动之间传输书籍对象,这就是我在 Book Class 中实现 Parcelable 的原因
-
您可以使用square.github.io/picasso LIBRARY 直接加载图片网址,在这种情况下将网址保存为字符串并在需要时用于加载图片
-
Glide 是什么意思?
-
你应该保存图片的链接而不是位图。这会消耗更多的空间和处理资源,Large Bitmap会导致OOM。
-
是的,你可以使用任何图像缓存库,如通用图像加载器、glide 或 Square Picasso。保存位图 >> 编码和解码是不好的方法。
标签: android serialization bitmap gson