最近我一直在为 android 开发一个音乐播放器作为学习经验。它进展顺利,但有一个问题。在音乐播放器活动中,我得到了作为位图播放的歌曲的嵌入式专辑封面。然后我将此位图设置为 ImageView。这很好用,但是在发布了大约 10 首不同的歌曲后,我得到了 OutOfMemoryException。这很奇怪,因为每次我开始一首新歌时都会调用 onCreate(),这意味着在上一个活动中调用了 onStop()(对吗?),并且在 onStop 我释放了位图(我也尝试过 onDestroy() 但是这没有帮助)。此外,如果一首新歌开始播放,媒体播放器会被重置,所以这也不应该是一个问题。那么你们中有人对 OutOfMemoryException 发生的原因有什么建议吗?
问问题
242 次
1 回答
1
您可以在 onResume() 中加载图像并在 onPause() 中回收相同的图像。您还需要有效地加载位图
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
检查主题下的链接将缩小的版本加载到内存中。
查看链接中的视频以了解内存管理
http://www.youtube.com/watch?v=_CruQY55HOk。
要查找内存泄漏的原因,请使用上面链接中所示的 MAT Analyzer。
如果您的应用程序的堆内存不足,则会发生 OutOfMemoryException。
onCreate() 在活动生命周期中被调用一次,除非活动被销毁并且您再次启动活动 onCreate() 不会被调用。
于 2013-05-01T14:34:03.247 回答