2010-02-22 39 views
4

我正在創建一個涉及多個短聲片段的Android應用程序。目前,我在使用SoundPool加載我的聲音剪輯,一旦第二項活動由菜單活動開始。我似乎遇到的問題是,一旦此次要活動開始,聲音片段的加載會導致多個堆大小溢出,然後在實際加載活動後(模擬器從不給出錯誤或強制退出)。將使用MediaPlayer幫助我在這裏,並保持這些堆大小溢出?聲音片段堆大小溢出問題

另外,此時菜單活動開始等待結果的第2個活動(使用startActivityForResult()函數)。這是否意味着菜單活動被保存在內存中以及將第二個活動加載到內存中?如果是這樣,我可以通過在菜單活動中調用finish()來幫助我解決內存問題(當第二個菜單活動啓動時(然後在用戶希望返回菜單時重新啓動菜單活動,還是會引發一系列新問題? )?

+0

也許有點重複http://stackoverflow.com/questions/4119405/android-how-to-increase-heap-size-at-runtime/4631393#4631393? – pjv 2011-01-08 00:00:05

+0

看起來不像所有重複的Q – stealthcopter 2011-01-28 13:52:15

+1

您可以使用多個SoundPool實例來防止堆大小錯誤。您可以從http://stackoverflow.com/a/15331311/1124084 – andyao 2013-03-11 04:55:39

回答

5

是的,soundpool將保留所有的聲音在內存中。媒體播放器的單個實例可能是您需要的全部see here。你應該這樣做,你的記憶問題應該消失,而不必採取任何極端的措施。

+0

找到更多詳細信息。謝謝。 Android文檔不會更挑剔這一點,真是不幸。 – MattD 2013-09-19 03:43:43