rf4*_*f43 95 android android-intent android-service
onStartCommand(Intent, int, int)除了系统通过诸如START_STICKY?之类的标志重新启动服务之外,传递给它的Intent是否还有其他原因是NULL ?
此外,当系统重新启动服务时,该Intent.getAction()方法有时返回NULL ... Intent不仅仅是NULLgetAction()
我也在这里问过,但还没有得到答案.
UPDATE:马克·墨菲聊天后,他建议我返回START_REDELIVER_INTENT的onStartCommand()回调在我的服务,而不是START_STICKY使整个意图在重新启动发送.
我最初没有这样做,因为我担心如果服务试图做某事,那么在服务重新启动的那个中间......它会认识到它开始做那件事吗?我想这是逻辑我需要负责:)
Eri*_*uff 46
我很惊讶没有讨论传入的标志.我将在日志中使用以下内容监视此情况:
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;
}
Run Code Online (Sandbox Code Playgroud)
更新:标志为0所以那里没有任何可操作的东西.我在那里留下了空检查,没有丢失功能.
编辑:好的,我在所有地方的START_STICKY文档中找到了它!"如果没有任何挂起的启动命令要传递给服务,它将使用null intent对象调用,因此您必须注意检查这一点."
http://developer.android.com/reference/android/app/Service.html