首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试将大图像显示为无呃逆的平铺图像

尝试将大图像显示为无呃逆的平铺图像
EN

Stack Overflow用户
提问于 2012-02-07 01:14:19
回答 4查看 2.3K关注 0票数 0

我的平板电脑应用程序必须显示非常大的图像(2500x6000),并允许用户平移、放大和缩小。因为它不能放入内存中,所以我将它拆分成瓦片,并根据需要加载它们。我遇到的问题是,每当我卸载或替换位图时,我都会导致垃圾回收,这会使我的应用程序明显卡顿。我想知道是否有人想出了一些聪明的方法来解决这个问题?我使用BitmapFactory.decodeResource创建我的位图。我已经尝试替换相同的位图,但是垃圾收集仍然在运行(假设它转储旧的位图并用新的位图替换它)。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-07 05:30:18

找到答案了!在API11+中,BitmapFactory.Options有一个名为inBitmap的属性,它将在加载内容时重用位图。我就是这样实现的:

代码语言:javascript
复制
mBg[i] = Bitmap.createBitmap(800, 1232, Bitmap.Config.RGB_565);
mBgOptions[i] = new BitmapFactory.Options();
mBgOptions[i].inBitmap = mBg[i];
mBgOptions[i].inPreferredConfig = Bitmap.Config.RGB_565;
mBgOptions[i].inMutable = true;
mBgOptions[i].inSampleSize = 1;

垃圾回收器不再运行,并且已删除暂停。作为一个F.YI.,必须设置inSampleSize,否则它将无法工作。

票数 1
EN

Stack Overflow用户

发布于 2012-02-07 01:30:50

如果你的目标是Android 3.0,那么这个答案可能会有所帮助:

在Android3.0之前,您可以为平铺图像构建一个HTML页面,并让内置浏览器处理图像的加载和卸载。我在这里的回答有更多细节:

还有谁有其他方法吗?

票数 0
EN

Stack Overflow用户

发布于 2012-02-07 02:26:14

你在使用android:largeHeap="true“吗?这可能会降低GC的频率。另外,如果您的目标是平板电脑,那么您可以安全地假设您正在处理并发垃圾收集器。因此,如果它有更多、更小的内存块要收集,即更小的磁贴,它将工作得最好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9164175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档