我为Android手机构建了一个简单的应用程序(TCHS JROTC),在Android开发中我非常体面。我在Galaxy S2 Epic 4g上构建了这款应用程序,并且处理得非常完美。除了诸如Evo 4g和Nexus S之类的其他手机之外,它强制关闭一个具有大约8个图片图标的特定屏幕。我调试它,并抛出一个错误,说“不够内存”,这正是我认为这是因为我的代码是非常完美无缺,完美的作品。有没有人有任何想法如何让应用程序可能会增量加载,而不是一次性将图标图像全部转存到Activity中?谢谢!Android应用程序使用太多内存。我如何使它在更少的RAM上运行?
回答
你可以做些什么来减少应用程序的内存消耗是在图标中使用另一种像素编码。
你可以在RGB888,ARGB8888,ARGB4444,RGB565和更多我认为的像素进行编码。如果以资产形式存储Bitmaps,您可以如何加载。这个例子来自“开始Android游戏”一书。即使您对编写Android游戏不感兴趣,也是绝对可推荐的。
InputStream inputStream = assetManager.open("bob.png");
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_4444;
Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, options);
在这个例子中使用了ARGB4444编码。比如使用比ARGB8888更少的内存。
我只是一个初学者在android编程。但是,如果将图像存储在外部存储器/ SD卡上,而不是直接将它们放入项目中,我认为它可能会减少应用程序的内存占用量。这样他们将成为生成的.apk文件的一部分。这将有一些额外的字节。 :-)请纠正我,如果我错了这一点。我只是在学习。
您的最后一点是不正确的,将文件存储在不同的文件系统位置将无助于解决内存(堆)问题。 – cistearns 2012-02-22 08:48:57
那么我使用drawables,这是一个非常愚蠢的错误。当他们需要缩小的时候,我保存了巨大的图片,所以当我将它们重新缩放到合适的尺寸时,我的应用程序从2MB变为567或KB。它修复了所有强制关闭问题,这是我的问题。感谢您的帮助! – user1064249 2012-02-25 00:38:53
- 1. Android Constrain布局使用太多的内存(RAM)(内存泄漏)
- 2. 如何使Android应用程序“吃”的RAM内存
- 3. 我应该在我的Java程序中使用多少内存?
- 4. 应用程序可以在iPad上使用多少内存?
- 5. 我的Android应用程序占用太多内存?
- 6. 我该如何减少我在azure上运行的应用程序的内存使用量
- 7. 我的Windows应用程序真正使用多少内存?
- 8. iPhone:多少内存使用量太多?
- 9. 使用太多内存的OpenCL程序
- 10. 如何使我的程序在使用运行时软件包构建时使用更少的内存?
- 11. 当我执行我的Android应用程序,是否有可能知道多少内存占用运行程序
- 12. 为什么我的android应用程序消耗太多内存?
- 13. 如何减少我的Android应用程序使用的内存量
- 14. 如何让Java应用程序运行更多内存?
- 15. 使用太多内存的C#应用程序
- 16. Android:我的应用使用多少内存?
- 17. 如何告诉.NET应该使用多少内存?它应该为进程分配多少内存?
- 18. 减少Android应用程序中的内存使用量
- 19. 如何减少Socket应用程序的C#内存使用量
- 20. 如何减少WPF应用程序的内存使用量
- 21. 应用程序如何使用比虚拟内存更多的Real内存?
- 22. Android应用程序如何使用> = 256Mb的RAM?
- 23. 如何使我的Android应用程序更快使用钛应用程序
- 24. 而应用程序没有使用多少内存
- 25. iPhone应用程序可以使用多少内存?
- 26. 如何使用Terminal使用参数运行Android应用程序?
- 27. “运行为” Android应用程序缺少
- 28. 通过以太网在设备上运行Android应用程序
- 29. 在应用程序中登录多少,多少钱太多?
- 30. 如何在具有1,000个资产的AIR Flash应用程序中减少内存(RAM)使用量?
对不起,但你的代码并不完美,如果它不能正确处理内存不足的错误 – LordT 2012-02-21 14:41:04
你是否为不同的DPI提供了图标 - 例如,你是否为'drawable-xhdpi' /'drawable-hdpi'/'drawable-mdpi'和'drawable-ldpi' - 或者你只是将所有内容都转换为'drawable'? – Jens 2012-02-21 14:46:07
在内存不足错误时查看日志输出会非常有帮助,并且还会更深入地描述您在该屏幕上执行的操作。我会验证您使用的图片尺寸是否适合您的用户界面,使用比所需图片大的图片会导致内存不足,因为它们必须全尺寸加载到内存中,然后调整大小。除此之外,我猜你实际上有内存泄漏,并建议你使用MAT查找Google IO视频。 – cistearns 2012-02-22 08:58:01