我爲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