gpt4 book ai didi

android - Service.onStartCommand() - 是否可以返回一个以上的标志?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:16 27 4
gpt4 key购买 nike

我必须确保我的 Service 会运行,直到我显式调用 stopService()。所以我应该从 onStartCommand() 返回 START_STICKY 标志。

我还希望万一我的服务因为内存不足而被系统破坏,当系统重新创建它时 - onStartCommand() 将以最初启动服务的相同 Intent 被调用。因为这个原因 - 我想使用 START_FLAG_REDELIVERY 标志。根据文档 - http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle,我所描述的肯定会发生(并且实际上发生在我身上)

我知道我可以使用 startForground() 启动服务,这可以防止服务在内存不足时被系统杀死,但我不想使用这种方法,无论如何- 根据文档:系统仍然可以在极低的内存压力下杀死它。

所以如果我能从 onStartCommand() 返回就完美了START_STICKY|START_FLAG_REDELIVERY

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

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

最佳答案

您不能返回多个值。相反,我建议您在 onStartCommand 中返回 START_STICKY 标志。但这是第一次,将Intent bundle 的必要值保存在 SharedPreference 存储中。下一次,当您的 onStartCommand 被重新调用时(在从低内存或任何原因中恢复之后)并且发现 Intent 为 null 时,只需从首选项中加载值并继续做任何你想做的事。

关于android - Service.onStartCommand() - 是否可以返回一个以上的标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12856605/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com