我有问题,因为两个后续的startService调用清除了IntentService的私有数据 - 我假设服务在第一次调用完成后停止,然后在处理第二次调用时重新创建。是否有任何方法可以强制不重新创建IntentService,或者在后续的两个startService例程调用中将此私有数据存储为相同?
答案 0 :(得分:3)
如果您想尝试来跨实例保存数据,可以将其放在静态变量中。一个典型的例子:你有一些加载磁盘的状态,所以你创建一个全局单例,在第一次实例化时加载数据,然后对它的进一步请求使用相同的实例(不重新加载数据)。当服务的新实例在其onCreate()中检索单例时,如果先前的服务实例已经请求它,则不需要重新加载它。
在进行此类设计时,了解流程的生命周期以及何时可以将其杀死非常重要。否则,当您的进程在正常操作期间被终止时,您可能会在相当随机的点丢失数据。
答案 1 :(得分:2)
我假设服务在第一次调用完成后停止,然后在处理第二次调用时重新创建。
没有。只有在收到所有Intents
时才会停止。