【发布时间】:2019-01-01 06:11:43
【问题描述】:
我正在尝试制作一个图书阅读器,它只允许您阅读一本书。这本书的页数有限(228),每页都有网址。
现在,我试图在 ListView 中显示所有图像,但它一次加载所有图像,并且它们的大小超过 1GB,因此应用程序崩溃,并显示内存不足错误。
如何释放 ListView 中不可见项的内存,然后在滚动回它时再次加载它们?
我当前构建 LinearView 的代码如下
new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new ListView.builder(
padding: new EdgeInsets.all(8.0),
itemBuilder: (BuildContext context, int index) {
return new Image.network(MyApp.imageLinks.values.elementAt(index));
},),
// This trailing comma makes auto-formatting nicer for build methods.
);
但正如我所说,它会引发 OOM 错误。
我的设备有 3GB 的硬件内存,这还不够。
提前致谢。
【问题讨论】:
-
我只想指出,1GB 绝对是一个 疯狂 的图像大小,可以尝试在手机上加载。您应该强烈考虑将图像分辨率降低很多很多倍
-
Out of memory when displaying images in ListView 的可能副本,尽管从技术上讲,这可能是这个的副本。看起来这是重复发布的。
-
@JonahWilliams 我知道这是几年前的事了,但 1GB 是所有图像加在一起的大小,而不仅仅是单个图像。大约有 300 张图片,这些图片是可以在网上找到的免费书籍的页面,该应用程序旨在用作基于章节的指南。 1GB 对于 300 张图片似乎是可行的。
-
@MGlolenstine 你解决了这个问题吗?你能分享任何想法吗?