Android应用程序 - 我们可以在运行时重用图像吗?

时间:2010-11-18 19:52:18

标签: android image memory-management reusability

我们有一个Android应用程序,在Android 1.6上抛出内存不足错误。它在2.0以后工作正常。我们正试图在此时减少运行时内存使用量。

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

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

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

非常感谢您抽出时间阅读我的帖子。

2 个答案:

答案 0 :(得分:2)

如果该背景图像作为Drawable从资源加载,则它的位图数据已经在以这种方式创建的所有Drawable之间共享。所以不,在你的特定情况下,它可能不会让你受益。

答案 1 :(得分:0)

是的,您可以重复使用图片。

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

在这种情况下,您可以在适配器的构造函数中获取一次Bitmap,并在getView()方法中重用它,因此您不必为每一行加载它。这个技巧出现here

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

但我认为它不会产生那么大的差别,并且无需加密代码。

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