【问题标题】:OutOfMemory Exception on AndroidAndroid 上的 OutOfMemory 异常
【发布时间】:2011-06-23 07:20:15
【问题描述】:

我在我的应用程序中使用了一个与位图一起使用的外部 jar 库。这会导致我的应用程序出现内存不足异常。此类问题在以下问题中进行了描述: http://code.google.com/p/android/issues/detail?id=8488

一旦发生 OOME,活动崩溃,应用程序仍在运行,内存将被释放,但 wifi 连接将丢失。

有没有办法在活动崩溃之前释放内存?我应该说,我可能无法访问库正在使用的位图。我也尝试在 onPause 和 onDestroy 中调用 System.gc(),但这没有帮助。

为什么活动崩溃时会释放内存?

wi-fi 连接发生了什么?

谢谢

更新

这个库是osmdroid

【问题讨论】:

  • 如果您记录了 .jar 的使用情况会有所帮助。也许您没有调用释放/回收位图的 API。或者,您可能正在以原始分辨率解码大图像,这实在是太多了。
  • 这个 bibliothek 是 osmdroid,我还没有看到任何释放/回收位图的 api。但我会再看看

标签: android memory memory-management memory-leaks out-of-memory


【解决方案1】:

尝试用你自己的扩展Application类(需要声明AndroidManifest.xml)。在那些Application 类中,有一种方法Application.onLowMemory() - 必须在低内存上调用。您可以覆盖此方法并尝试释放不必要的资源。可能会有用。

【讨论】:

  • 好的,但是我怎样才能释放库的不必要资源(顺便说一句,它是 osmdroid)?
  • @Mur 你需要调用MapTileCache 实例的clear 方法。我发现将MapTileCache 实例设为单例然后调用onLowMemory 实现MapTileCache.getInstance().clear(); @barmaley 的主体更容易,这是一个非常正确的建议,谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多