如何在android中释放内存以避免内存泄漏

如何在android中释放内存以避免内存泄漏,android,performance,memory-leaks,Android,Performance,Memory Leaks,在浏览android开发者网站时,我发现了这个 它说为了避免内存泄漏,我们应该在onStop()中释放资源,但如何做到这一点 有几个臭名昭著的内存占用示例,媒体(音频/视频)和大型位图是最大的内存占用。大多数事情都是通过删除所有指向它们的指针并让GC按照自己的方式处理来完成的。但是,可以使用以下方法更直接地回收位图: if (yourBitmap != null) { yourBitmap.recycle(); youBitmap = null; } 您的媒体应该停止并取消引用

在浏览android开发者网站时,我发现了这个


它说为了避免内存泄漏,我们应该在onStop()中释放资源,但如何做到这一点

有几个臭名昭著的内存占用示例,媒体(音频/视频)和大型位图是最大的内存占用。大多数事情都是通过删除所有指向它们的指针并让GC按照自己的方式处理来完成的。但是,可以使用以下方法更直接地回收位图:

if (yourBitmap != null) {
    yourBitmap.recycle();
    youBitmap = null;
}

您的媒体应该停止并取消引用。但是它应该在onPause()中停止,直到onStop()才停止。

基本上,任何正确为空的对象都会被视为已释放,操作系统可以回收它们的内存。您的问题过于笼统,很难提供一个详尽的方法列表,但您通常应该了解以下几点:

  • 停止/关闭您不再需要的任何服务/文件/连接
  • 不要在任何静态对象中存储任何可绘制内容,可绘制内容包含对其所有者视图的引用,这些视图包含对其所有者活动的引用,因此如果您保留任何可绘制内容,您将不必要地保留大量对象/内存
  • 对于一个实用程序,你可能不需要担心内存问题;但对于使用大量位图的应用程序,您应该深入了解位图在应用程序中的使用方式,以便有效地管理它们

  • k我可以删除位图的引用,但是在内存不足时如何删除对象确保你.recycle()你的位图,而不仅仅是删除引用。这将更快地释放你的内存。Kai在他的回答中留下了一些好的观点。drawables呢?所以我应该在
    onPause
    中将我所有的文本视图和图像按钮设置为空?所以我应该在
    onPause
    中将我所有的文本视图和图像按钮设置为空?@RuchirBaronia没有必要这样做,因为:a。如果只调用onPause(),则操作系统将引用该活动。B如果调用了onDestory(),那么活动及其引用的所有内容都将被释放。只有当某个其他对象或某个类的静态变量获取被释放的活动时,才会发生泄漏。