gpt4 book ai didi

android - Drawable 的 ArrayList 还是 Bitmap 的 ArrayList?

转载 作者:行者123 更新时间:2023-11-29 17:58:05 25 4
gpt4 key购买 nike

我遇到一种情况,我必须将一些图像存储在 ArrayList(BitmapDrawable)中。当想到位图时,我就会想到像 OutOfMemory 这样的内存问题。DrawableArrayList 有什么区别吗?或者它会像 BitmapArrayList?我应该使用什么?

最佳答案

这是一个有趣的问题...概括我的回答,因为我不知道为什么你需要使用 Drawable/Bitmap< 的 List/.

老实说,我不会使用它们,因为:

  1. 位图:这些对象占用大量内存,如果您不小心,将这些对象存储在内存中迟早会造成危害。例如:也许您想通过 Intent 将该列表发送到不同的组件。如果您这样做并且初始列表没有被破坏,您将遇到内存量翻倍的情况,因为位图将在目标组件端被反序列化为新对象。
  2. 可绘制对象:BitmapDrawable保留对其位图的引用,所以我不认为它比位图本身提供一些好处。您可能会“忘记”清除您的 Drawables 列表,这样您就会泄漏位图的内存。我不认为创建 Drawable 会耗费大量时间或资源以使其值得缓存。

要添加更多内容,您必须涵盖 Activity 被销毁、重新创建的所有情况,以免泄露列表。

就个人而言,对于从网络下载的位图,我宁愿使用LRUCache 来存储位图,为它们分配 key 并将它们备份到磁盘缓存中。我会为他们每个人分配 key ,并且只使用这些 key 。有像 DiskLRUCache 这样的库, picassonovoda-ImageLoader对你有很大帮助。

同样适用于资源位图:只使用键 - 不需要缓存它们。资源图像应该足够小以适应您的设备尺寸和密度,并且足够大以满足您的需求。

这只是我的意见......

关于android - Drawable 的 ArrayList 还是 Bitmap 的 ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17857449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com