当内存不足时,我是否有机会知道我的应用程序即将被系统杀死?

时间:2013-11-04 03:30:00

标签: android

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

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

任何人都能帮我一个忙吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

如果你仔细查看the Android training,它应该告诉你在哪里可以做到这一点。总结一下

您应该假设您的应用可以在调用onPause()后随时被杀死 - 因此您要执行的任何未启动都应该在onPause()

中完成

答案 1 :(得分:1)

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

答案 2 :(得分: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.

所以简单的答案是否。

那么替代方案呢?

您可以持续监控堆使用情况,然后再获得内存不足错误,并执行您想做的事情。