10

在浏览 android 开发者网站时,我发现了这个它说为了避免内存泄漏,我们应该在 onStop() 中释放资源

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

4

2 回答 2

7

基本上任何被正确置空的对象都被认为是已释放的,并且它们的内存可以被操作系统回收。您的问题过于笼统,很难提供详尽的方法列表,但您通常应该注意这些:

  1. 停止/关闭您不再需要的任何服务/文件/连接
  2. 不要在任何静态对象中存储任何 Drawable,Drawable 持有对其所有者 View 的引用,这些 View 持有对其所有者 Activity 的引用,因此如果您持有任何 Drawable,您将不必要地持有大量对象/内存
  3. 对于实用程序应用程序,您可能不必担心内存;但是对于使用大量 Bitmap 的应用,您应该深入了解Bitmap 管理以及如何在您的应用中使用 Bitmap,以便有效地管理它们
于 2013-07-27T06:53:13.863 回答
7

有几个臭名昭著的内存占用例子,媒体(音频/视频)和大位图是最大的内存占用。大多数事情都是通过删除所有指向它们的指针并让 GC 处理它们来处理的。但是,位图可以通过使用以下方法立即回收:

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

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

于 2013-07-27T06:45:30.797 回答