2010-11-18 89 views
3

我们有一个Android应用程序在Android 1.6上抛出内存不足错误。它在2.0以上工作正常。我们正试图在这一点上减少运行时内存使用量。Android应用程序 - 我们可以在运行时重新使用图像吗?

我们正在考虑重新使用图像 - 例如每个屏幕的背景图像。是否可以在应用程序启动时在内存中加载一次背景图像,并在每个屏幕中重新使用此缓存副本,而不是每个屏幕都加载相同的背景图像,从而增加RAM中的总体占用空间?

我们知道围绕运行时内存使用有很多其他方式和最佳实践。但在这一点上,我们只是想知道这种“图像重用”方法是否真的可行?

如果是,我们该怎么做?完全可以节省任何内存,否则Android操作系统仍然会为每个屏幕创建同一资产的多个副本,而不会从内存角度给予任何好处?

非常感谢您花时间阅读我的文章。

回答

0

是的,你可以重复使用图像。

它通常为ListViews完成,其中每行包含相同的图像。

在这种情况下,您可以在适配器的构造函数中获取一次Bitmap,然后在getView()方法中重用它,因此您无需为每行加载它。这个技巧是提供的here

在你的情况下,你可以加载你的背景位图在主要活动的onCreate()方法中,将其保存为公共静态属性,然后在所有活动中重新使用它。

但我认为这不会造成太大的区别,并且无需付费。

当您正在调整您的用户界面时,我建议您观看2009 Google I/O Presentation by Romain Guy,如果您还没有看到它。它显示了很多提高UI性能的有用技巧,特别是当涉及到位图操作时。

2

如果该背景图像作为资源中的可绘制对象加载,则其位图数据已在所有以此方式创建的可绘制对象之间共享。所以不,在你的特殊情况下它可能不会使你受益。

相关问题