我必须确保我的Service
将运行,直到我显式调用stopService()
。
所以我应该从onStartCommand()
返回START_STICKY
标志。
另外,我希望在由于内存不足而导致服务被系统破坏的情况下,当系统重新创建服务时,将以最初启动服务时的相同意图调用onstartcommand()。
因为这个原因-我想使用START_FLAG_REDELIVERY
标志。
根据文档,我所描述的肯定会发生(实际上也会发生在我身上-http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle
我知道我可以用startForground()
启动服务,这可以防止当内存不足时服务被系统杀死,但我不喜欢使用这种方法,而且无论如何-根据文档:系统仍然可以在极低的内存压力下杀死它。
所以如果我能从onStartCommand()
返回就太好了。START_STICKY|START_FLAG_REDELIVERY
但是根据文档,你似乎只能使用其中一个标志(也许我错了??)
那么,是否有可能以某种方式启动服务,以我描述的方式工作?
最佳答案
不能返回多个值。相反,我建议您在START_STICKY
中返回onStartCommand
标志。但这是第一次将intent的bundle的必要值保存在SharedPreference
存储中。下一次,当您的onStartCommand
被重新调用(在从内存不足或任何原因恢复后)并且发现意图为空时,只需从首选项中加载值并继续执行您想要的操作。