4

我必须确保我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

但根据文档,您似乎只能使用其中一个标志(也许我错了??)。

那么是否有可能以某种方式启动以我所描述的方式工作的服务?

4

2 回答 2

4

您不能返回多个值。相反,我建议您START_STICKYonStartCommand. 但是第一次,将 Intent 包的必要值保存在SharedPreference存储中。下一次,当你onStartCommand被重新调用(从内存不足或其他原因恢复后)并且发现意图为null时,只需从首选项中加载值并继续使用你想要的任何东西。

于 2012-10-12T10:23:45.920 回答
1

START_STICKY据我所知,两者之间的区别START_FLAG_REDELIVERY只是它将以空意图或再次以相同意图重新交付。这就是你想要的编程方式。您应该只返回一个标志,因为它们是不同的操作模式。

于 2012-10-12T10:57:12.690 回答