0

我在 Application.onCreate 或 MainActivity.onCreate 做了一些初始化工作(例如打开 DB 或初始化磁盘缓存),但我们没有机会进行 uninitlization 工作(例如关闭 DB 或刷新/关闭/初始化磁盘缓存)对于图像)当应用程序即将被系统杀死时。

我们都知道 Application.onDestroy 只在模拟器上调用......当我的应用程序在内存不足的情况下被系统杀死时,永远不会调用 Application.onLowMemory。

任何人都可以帮我一个忙吗?

谢谢!

4

3 回答 3

2

如果您浏览过 Android 培训,它应该会告诉您在哪里可以做到这一点。总结一下

您应该假设您的应用程序可以在onPause()被调用后的任何时间被终止——因此您想要做的任何取消初始化都应该在onPause()

于 2013-11-04T03:36:31.307 回答
1

onTrimMemory()是您应该认真考虑释放一些资源的地方。那是针对 API14 的。onLowMemory() 是旧版本的最佳选择。

于 2013-11-04T04:16:15.090 回答
0

OutOfMemoryError派生自Error类。而且,从它的文档中,

Error is the superclass of all classes that represent unrecoverable errors.
 When errors are thrown, they should not be caught by application code.

所以简单的答案是否定的。

那么有什么替代方案呢?

您可以持续监控堆使用情况,并在出现内存不足错误之前执行您想做的任何事情。

于 2013-11-04T04:03:38.983 回答