2012-10-22 84 views
0

是否可以在低内存时拦截系统关闭我的应用程序的事件?我知道有一种方法“onLowMemory”,但这并不意味着我的应用程序在被调用后会被关闭。当系统在低内存上关闭应用程序时保存状态

我的问题是,我正在共同开发一个使用大量静态数据的应用程序(我知道应该避免,但这不是我的决定,此时几乎不可能改变这一事实)。如果我按回家,不回到这个应用程序的例如。 10小时它可能会强制关闭,因为静态数据不存在了(应用程序被系统杀死)。

是否有可能知道应用何时将被系统杀死?我会将静态数据存储在某个地方,以便在重新创建应用程序时获取。有什么解决方法?也许,如果连接到这样的事件是不可能的,我可以做一个服务,每隔几分钟就会保存这个状态,所以当应用程序被杀时,我可能会有最新的静态数据?

您是否遇到此问题?你有什么解决方案/建议?

+0

如果10小时后数据不再存在,可能是因为您的应用程序被杀害了。在这种情况下,您将不得不加载数据。如果强制关闭,它会不会总是强制关闭,因为当应用程序第一次启动时,数据不在那里。 onLowMemory()是最好的尝试。还有'onTrimMemory()',它给你留下的内存级别。我很抱歉,这是一个非常模糊的问题,我认为可能会误解操作系统 –

+0

@GregGiacovelli中的进程,内存和状态是如何工作/与您的应用程序相关的,我知道这是因为我的应用程序被杀害了。强制关闭与应用程序无法加载此静态数据有关(所有引用都为空等)。我希望只是为了找到保存数据的最佳时机(就在内存不足之前 - 被操作系统杀死)。 – kajman

回答

1

您的应用程序是否在后台对此静态数据执行任何操作?你可以保存所有内容在onPause()。一旦被称为你的应用程序在任何时候都可以无需任何进一步的回调,所以如果需要保存的东西,是这样做的地方。

+0

...或类似的东西。即使您无法更改体系结构,为了确保您的数据能够可靠地保存,对其进行改变也许是个好主意。更改时保存数据,某些事务性或幂等变化等可能是更好的选择。否则,您仍然有数据丢失的可能性。 –

相关问题