Android 包裹列表<&燃气轮机;包含位图的自定义对象的
我需要从一个活动传递到另一个活动的新闻列表(这是一个RSS阅读器),以便在ViewPager中显示它们 有关新闻的所有数据都存储在一个类中:Android 包裹列表<&燃气轮机;包含位图的自定义对象的,android,arraylist,bitmap,parcelable,Android,Arraylist,Bitmap,Parcelable,我需要从一个活动传递到另一个活动的新闻列表(这是一个RSS阅读器),以便在ViewPager中显示它们 有关新闻的所有数据都存储在一个类中: public class SingleNew implements java.io.Serializable{ public String title; public String link; public Date date; public Bitmap image; } 因此,在第一个活动中,我已经下载了所有包含图
public class SingleNew implements java.io.Serializable{
public String title;
public String link;
public Date date;
public Bitmap image;
}
因此,在第一个活动中,我已经下载了所有包含图像的新闻,为了避免在另一个活动中再次下载,我决定将它们作为可包裹对象传递给意图。所以我创建了我的定制包裹
public class CustomParcelable implements Parcelable {
public List<SingleNew> news;
public CustomParcelable(){
news= new ArrayList<SingleNew>();
}
public CustomParcelable(Parcel in) {
news= new ArrayList<SingleNew>();
readFromParcel(in);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeList(news);
}
private void readFromParcel(Parcel in) {
news = new ArrayList<SingleNew>();
in.readList(news, List.class.getClassLoader());
}
public static final Parcelable.Creator CREATE = new Parcelable.Creator() {
public CustomParcelable createFromParcel(Parcel parcel) {
return new CustomParcelable(parcel);
}
public CustomParcelable[] newArray(int size) {
return new CustomParcelable[size];
}
};
}
我知道如何将单个位图作为我的CustomParcelable
对象的一个属性传递,但在这种情况下,我有一个列表
,每个位图的内部都有位图,所以我不知道如何准备。
我还发现了关于位图的其他问题,但正如我所说,请解释如何作为单个属性传递,而不是作为自定义对象列表的属性传递
此外,我想问这是否是传递大量图像的最佳方式。我在另一个问题中读到,更合适的做法是将它们存储在内部存储器中,然后进行恢复。这是真的吗?或者这种方法是正确的?使用位图的
字节[]
实例
使用这些函数在对象之间进行转换
public static byte[] convert(Bitmap bitmap) throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
byte[] array = stream.toByteArray();
stream.close();
return array;
}
public static Bitmap convert(byte[] array) {
return BitmapFactory.decodeByteArray(array,0,array.length);
}
使用位图的
字节[]
实例
使用这些函数在对象之间进行转换
public static byte[] convert(Bitmap bitmap) throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
byte[] array = stream.toByteArray();
stream.close();
return array;
}
public static Bitmap convert(byte[] array) {
return BitmapFactory.decodeByteArray(array,0,array.length);
}
使用位图的
字节[]
实例
使用这些函数在对象之间进行转换
public static byte[] convert(Bitmap bitmap) throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
byte[] array = stream.toByteArray();
stream.close();
return array;
}
public static Bitmap convert(byte[] array) {
return BitmapFactory.decodeByteArray(array,0,array.length);
}
使用位图的
字节[]
实例
使用这些函数在对象之间进行转换
public static byte[] convert(Bitmap bitmap) throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG,100,stream);
byte[] array = stream.toByteArray();
stream.close();
return array;
}
public static Bitmap convert(byte[] array) {
return BitmapFactory.decodeByteArray(array,0,array.length);
}
我宁愿使用字符串url并将其传递给其他活动,然后从那里加载图像,而不是在对象中使用位图。位图是资源密集型的,如果创建大量包含位图的对象,很可能会遇到内存问题。我宁愿使用字符串url并将其传递到其他活动,然后从那里加载图像,而不是在对象中使用位图。位图是资源密集型的,如果创建大量包含位图的对象,很可能会遇到内存问题。我宁愿使用字符串url并将其传递到其他活动,然后从那里加载图像,而不是在对象中使用位图。位图是资源密集型的,如果创建大量包含位图的对象,很可能会遇到内存问题。我宁愿使用字符串url并将其传递到其他活动,然后从那里加载图像,而不是在对象中使用位图。位图是资源密集型的,如果你创建了很多包含位图的对象,你很可能会遇到内存问题。谢谢你这么快的回答。现在一切正常!顺便问一下,这是一个好的做法吗?我的意思是,用这种方式传递几个图像。离开网站之前,我会阅读20、30张可能是高分辨率的图片,我不知道它是否会崩溃。如果对你有帮助,请标记为答案谢谢。。不通过20、30个图像会导致内存溢出,特别是在有重载图像的情况下。导致分配内存的所有东西都会卡住并崩溃。在这种情况下,最好再次下载,而不是将其作为包裹传递?以下回答:1.将位图缩放到300x300或更低,取决于您的使用情况通常没有使用非常高比例图像的平板电脑/手机2。每次用户导航时下载部分新闻3.将图像保存在外部存储器中。。。再次取决于你的过程谢谢你这么快的回答。现在一切正常!顺便问一下,这是一个好的做法吗?我的意思是,用这种方式传递几个图像。离开网站之前,我会阅读20、30张可能是高分辨率的图片,我不知道它是否会崩溃。如果对你有帮助,请标记为答案谢谢。。不通过20、30个图像会导致内存溢出,特别是在有重载图像的情况下。导致分配内存的所有东西都会卡住并崩溃。在这种情况下,最好再次下载,而不是将其作为包裹传递?以下回答:1.将位图缩放到300x300或更低,取决于您的使用情况通常没有使用非常高比例图像的平板电脑/手机2。每次用户导航时下载部分新闻3.将图像保存在外部存储器中。。。再次取决于你的过程谢谢你这么快的回答。现在一切正常!顺便问一下,这是一个好的做法吗?我的意思是,用这种方式传递几个图像。离开网站之前,我会阅读20、30张可能是高分辨率的图片,我不知道它是否会崩溃。如果对你有帮助,请标记为答案谢谢。。不通过20、30个图像会导致内存溢出,特别是在有重载图像的情况下。导致分配内存的所有东西都会卡住并崩溃。在这种情况下,最好再次下载,而不是将其作为包裹传递?以下回答:1.将位图缩放到300x300或更低,取决于您的使用情况通常没有使用非常高比例图像的平板电脑/手机2。每次用户导航时下载部分新闻3.将图像保存在外部存储器中。。。再次取决于你的过程谢谢你这么快的回答。现在一切正常!顺便问一下,这是一个好的做法吗?我的意思是,用这种方式传递几个图像。离开网站之前,我会阅读20、30张可能是高分辨率的图片,我不知道它是否会崩溃。如果对你有帮助,请标记为答案谢谢。。不通过20、30个图像会导致内存溢出,特别是在有重载图像的情况下。导致分配内存的所有东西都会卡住并崩溃。在这种情况下,最好再次下载,而不是将其作为包裹传递?以下回答:1.将位图缩放到300x300或更低,取决于您的使用情况通常没有使用非常高比例图像的平板电脑/手机2。每次用户导航时下载部分新闻3.将图像保存在外部存储器中。。。这也取决于你的过程