我正在编写录制服务,可以在意图和功能中正确获取其他数据。我使用START_REDELIVER_INTENT,以便在每次启动命令时,我使用与原始意图相同的设置开始录制,但我必须知道onStartCommand的当前调用是由于显式startService还是进程崩溃。
所以我的问题是如何区分由于startService请求而导致的onStartCommand的调用,以及系统在服务崩溃后关闭而没有显式stopSelf \ stopService时调用的onStartCommand调用?
答案 0 :(得分:1)
查看onStartCommand的flags参数。
如果为0,则为“正常”开始。
如果标志包含START_FLAG_REDELIVERY,那么在服务被终止并重新启动后,它就是一个重新传递的意图。
如果标志包含START_FLAG_RETRY,那么它是一个重新尝试的意图,可能是在崩溃之后但可能还有其他情况。