android - 避免内存不足错误的最佳方法 - Android

标签 android multithreading service out-of-memory handler

目前,我和我的小组成员正在制作一个安卓应用程序,可以帮助 children 学习基础知识。它将为 children 提供一个教学模块和一个测验模块。我遇到了从应用程序中弹出这么多内存不足错误的问题。

当在后台播放音乐、播放动画、在 ImageSwitcher 中的多个图像之间切换以及播放音频时,应用程序总是会产生内存不足错误。我认为我的问题是在我的 Activity 中处理未使用的对象。

我在互联网上搜索了很多次,但找不到解决我们问题的答案。其他一些解决方案非常复杂,我什至不理解它们。在使用 MediaPlayer、XML Animations、ImageSwtcher 和 SoundPool 等组件时,任何人都可以帮助防止 OOM 错误吗?我应该分别使用什么?服务?线?处理程序? ImageSwitcher 是个头疼的东西,一开始还不错,但是当我要预览列表中的第 16 个图像时,弹出 OOM 错误。

感谢所有愿意帮助我们的人。我很乐意展示我们的代码,但它有很多评论,我认为有人没有我们的新手代码就可以回答这个问题。 :)

最佳答案

  1. 限制变量的范围
  2. 不要忘记完成 Activity 并在销毁回调时进行必要的清理(清理监听器等)
  3. 学习内存分析工具,例如 Eclipse Android 开发工具的 Eclipse Mat 部分。要查找内存使用问题,请参阅 debugging memory
  4. 在您的代码中加入图像加载库,例如 Android-Universal-Image-LoaderPicasso ,免费获取大量样板代码和内存回收

关于android - 避免内存不足错误的最佳方法 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21808016/

相关文章:

android - 没有找到运行 pocketsphinx Android Demo 的 JNI_OnLoad

windows-phone-7 - WP7 无效的跨线程访问 - ScheduledTaskAgent

java - 为什么我总是在 View.OnClickListener 中看到最后一个 id?

android - 可见并消失了android中的 fragment

c线程并发和内存混合

c - 尽管运行 pthread_exit,分离的线程不会退出?

c# - 在哪里可以找到全局 IATA 城市列表?

javascript - 我无法使用 React Native 的 axios API 登录

api - 以编程方式连接到 TFS 出现 "TF30063: You are not authorized"错误

重新创建 Activity 后,Android Volley 不会从服务器加载数据