2011-09-15 61 views
4

当一个adroid服务被操作系统杀死(由于内存不足或低功耗)。服务在被杀之前是否得到通知? onDestroy()回调是否被调用?在被Android杀死之前保存绑定服务状态

我们主要关心的是我们保存服务的状态时,它被杀害之前的能力。我们知道,一旦资源可用,服务可能会由系统重新启动,但在服务被杀之前保存服务状态的推荐方法是什么?

附件中是我们的一个绑定的服务力闭合过程的了解序列图,它包括了我们想发生什么。

+0

我认为(但不确定)你会在系统杀死你的应用时得到onDestroy()调用。但是你应该知道,有些时候你的应用程序会被杀死,并且你没有得到任何回调(即用户杀死任务杀手)所以你要确保这不会在你的系统中造成严重问题。 – FoamyGuy

回答

1

它被杀害之前,该服务得到通知? onDestroy()回调是否被调用?

可能。这是不能保证的。

我们主要关注的是我们能够在服务死亡之前保存服务状态。

服务不应该有一个只能在RAM中表示状态。你应该在状态改变时保持状态(例如使用数据库)。

+1

就像Activity一样,onDestroy()在内存中死亡时也不会被调用。 – hackbod

+3

必须将所有状态更改保持为闪存是不可接受的,因为它需要大大增加电池使用量并缩短闪存的使用寿命。 – Michael

0

从API级别14(ICS)开始,如果服务正在被用户移除并且系统决定that it is a good time for a process to trim unneeded memory from its process,则android os将通知该服务。这是一个link

相关问题