gpt4 book ai didi

android - 传递的 Intent 在 onStartCommand 中为 NULL 的原因

转载 作者:IT老高 更新时间:2023-10-28 13:06:21 25 4
gpt4 key购买 nike

除了系统通过诸如 START_STICKY?

此外,当系统重新启动服务时,Intent.getAction() 方法有时会返回 NULL...。 Intent 不是 NULL 只是 getAction()

我问 here也一样,但还没有收到答复。

UPDATE:与 Mark Murphy 聊天后,他建议我在我的服务中的 onStartCommand() 回调中返回 START_REDELIVER_INTENT 而不是 START_STICKY 以便在重新启动后发送整个 Intent 。

我最初并没有这样做,因为我担心如果服务正在尝试做某事,那么在此过程中服务会重新启动...它会识别出它开始做某事吗?我想这是我需要负责的逻辑:)

最佳答案

我很惊讶没有讨论传入的标志。我将使用以下内容在日志中监控这一点:

if (null == intent || null == intent.getAction ()) {
String source = null == intent ? "intent" : "action";
Log.e (TAG, source + " was null, flags=" + flags + " bits=" + Integer.toBinaryString (flags));
return START_STICKY;
}

更新:标志为 0,因此那里没有可操作的内容。我已将空检查留在那里,没有任何功能损失。

编辑:好的,我在所有地方的 START_STICKY 的文档中找到了它! “如果没有任何待处理的启动命令要传递给服务,它将使用 null Intent 对象调用,因此您必须注意检查这一点。”

http://developer.android.com/reference/android/app/Service.html

关于android - 传递的 Intent 在 onStartCommand 中为 NULL 的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421430/

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