我正在创建一个涉及多个短声道剪辑的Android应用。目前,我正在使用SoundPool
在菜单活动开始第二个活动时加载我的声音片段。我似乎遇到的问题是,一旦这个辅助活动开始,声音片段的加载会导致多个堆大小溢出,然后在一点之后活动实际加载(模拟器从不给出错误或强制退出)。使用MediaPlayer
会在这里帮助我并保持这些堆大小溢出吗?
此时,菜单活动启动第二个活动,等待结果(使用startActivityForResult()
功能)。这是否意味着菜单活动被保存在内存中以及将第二个活动加载到内存中?如果是这样,我可以通过在启动第二个菜单活动时调用菜单活动上的finish()
来帮助解决我的内存问题(然后在用户希望返回菜单时重新启动菜单活动或者这会带来一个全新的菜单活动一系列问题?)?
答案 0 :(得分:5)
是的,soundpool会将所有声音保留在内存中。媒体播放器的单个实例可能就是您所需要的see here。你应该这样做,你的记忆问题应该消失,而不必采取任何极端措施。