2011-02-05 52 views
4

我有问题,beetwen两个后续调用startService IntentService的私人数据被清除 - 我假设服务在第一次调用完成后停止,然后在处理第二次调用时重新创建。有什么办法可以强制IntentService不被重新创建,或者将这些私有数据存储在startService例程的两个后续调用中是相同的吗?有没有办法强制IntentService不被重新创建?

回答

2

我假设服务在第一次调用完成后停止,然后在处理第二次调用时重新创建。

不会。只有在收到的所有Intents都已处理完毕后才会停止。

+1

好吧,让我们假设第一个意图已经发送,然后它由IntentService处理,并且IntentService被停止。一段时间后,第二个意图被发送 - 我如何恢复IntentService的上下文来处理以前的意图? – miqqo 2011-02-05 22:50:56

3

如果你想尝试来保持跨实例的数据,你可以把它放在一个静态变量。一个典型的例子是:你有一些你加载磁盘的状态,所以你创建一个全局单例,它在第一次实例化时加载数据,然后进一步请求它使用相同的实例(不需要重新加载数据)。当你的服务的一个新实例在onCreate()中检索单例时,如果之前的服务实例已经请求了它,它不需要重新加载。

当做这样的设计时,了解您的流程的生命周期以及何时可以杀死流程非常重要。否则,当正常操作过程中死亡时,可能会以相当随机的点丢失数据。

相关问题