2014-02-16 29 views
0

目前,我的團隊夥伴和我正在製作一款Android應用程序,幫助孩子學習基本知識。它將爲孩子提供一個教學模塊和一個測驗模塊。我遇到了一個由應用程序彈出的內存不足錯誤的問題。避免內存不足錯誤的最佳方法 - Android

當在後臺播放音樂,播放動畫,在ImageSwitcher中的多個圖像之間切換以及播放音頻時,應用程序總是會產生內存不足錯誤。我認爲我的問題是在我的活動中放置未使用的對象。

我已經搜索了很多次,但我找不到解決我們問題的答案。其他一些解決方案非常複雜,我甚至都不瞭解它們。任何人都可以請幫助使用組件,如MediaPlayer,XML動畫,ImageSwtcher和SoundPool時防止OOM錯誤?我應該每個人使用什麼?服務?線?處理程序? ImageSwitcher是一個令人頭痛的問題,它在開始時會很好,但是當我要在列表中預覽第16張圖像時,會彈出OOM錯誤。

感謝任何會幫助我們的人。我會很高興展示我們的代碼,但它有太多的評論,我認爲沒有我們的新手代碼,有人可以回答這個問題。 :)

+0

1. Android的堆有限。 2.加載的圖像存儲在堆上。 3.圖像所需的堆默認爲高x寬x 4字節。 4.不要試圖保存16張圖片。 5.使用inscaling。 6.谷歌1-5。 – Simon

+0

哇!感謝您的迴應。我會尋找那些。 我應該使用ImageSwitcher進行圖像處理嗎?還是有更好的方法? 什麼是在android中實現聲音和音樂的最佳方式? – anonymous

回答

1
  1. 限制你的變量
  2. 不要忘了完成的活動,並做必要的清理工作在析構回調(清潔聽衆等)
  3. 瞭解內存分析工具如Eclipse的Eclipse的墊部分的範圍android開發工具。要找到你的內存使用的問題,請參見debugging memory
  4. 納入一個圖像加載庫在你的代碼,如Android-Universal-Image-LoaderPicasso,得到了很多的樣板代碼爲自由和內存回收
+0

對不起,如果問的問題太多,但我怎樣才能完成活動和清理?我不知道你在3號和4號的答案是什麼,但是謝謝。我會尋找那些。 – anonymous

+0

@anonymous用鏈接更新了我的答案。我的意思是關於清理的一部分是你的代碼中可能存在內存泄漏,並且(我沒有看到你的代碼,所以我不能真正知道),這通常發生在Context(活動)或監聽器等沒有被釋放時退出活動(這種清理通常在onPause或onDestroy中完成,取決於變量...) – Magnus

+1

謝謝先生。我會查看我的代碼和您提供的鏈接。上帝祝福你。 – anonymous