Причины, что принятое намерение будет NULL в onStartCommand

Есть ли другая причина, согласно которой Intent, переданный в onStartCommand(Intent, int, int), должен быть NULL, кроме перезапуска системы через флаг, например START_STICKY?

Кроме того, когда служба перезапускается системой, метод Intent.getAction() возвращает NULL... иногда. Намерение не равно NULL только getAction()

Я спросил здесь, но еще не получил ответа.

ОБНОВЛЕНИЕ. После общения с Марком Мерфи он предложил мне вернуть START_REDELIVER_INTENT в обратном вызове onStartCommand() в моей службе вместо START_STICKY, чтобы все намерение было отправлено после перезапуска,

Я не делал этого изначально, потому что меня беспокоило, что если служба пытается что-то сделать, то в середине того, что-то было перезапущено, будет признано, что он начал что-то делать? Я думаю, что это логика, я должен буду отвечать за:)

Ответ 1

Я удивлен, что нет обсуждения входящих флагов. Я собираюсь отслеживать это в журналах со следующим:

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 из всех мест! "если в службу не будут отправляться ожидающие стартовые команды, они будут вызваны с объектом нулевого намерения, поэтому вы должны позаботиться об этом".

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