program tip

onStartCommand에서 전달 된 Intent가 NULL이되는 이유

radiobox 2020. 8. 29. 09:45
반응형

onStartCommand에서 전달 된 Intent가 NULL이되는 이유


onStartCommand(Intent, int, int)시스템이 다음과 같은 플래그를 통해 서비스를 다시 시작하는 것 외에 전달되는 Intent가 NULL 이되는 다른 이유가 START_STICKY있습니까?

또한 시스템에서 서비스를 다시 시작할 때 Intent.getAction()메서드가 NULL을 반환하는 경우도 있습니다. 의도는 NULL이 아닙니다.getAction()

나도 여기서 물 었지만 아직 답변을받지 못했습니다.

업데이트 : Mark Murphy와 채팅 한 후, 그는 전체 인 텐트가 다시 시작된 후 전송되도록 대신 내 서비스 START_REDELIVER_INTENTonStartCommand()콜백으로 반환하도록 제안했습니다 START_STICKY.

서비스가 무언가를하려고한다면 그 중간에 서비스가 다시 시작 될까봐 걱정했기 때문에 처음에이 작업을 수행하지 않았습니다. 나는 그것이 내가 책임 져야 할 논리라고 생각한다 :)


들어오는 플래그에 대한 논의가 없다는 것에 놀랐습니다. 다음과 같이 로그에서이를 모니터링 할 것입니다.

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이어서 실행 가능한 것이 없었습니다. 기능 손실없이 null 수표를 그대로 두었습니다.

편집 : 좋아, 모든 장소의 START_STICKY 문서에서 찾았습니다! "서비스에 전달 될 보류중인 시작 명령이없는 경우 null 인 텐트 개체와 함께 호출되므로주의해서 확인해야합니다."

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

참고 URL : https://stackoverflow.com/questions/8421430/reasons-that-the-passed-intent-would-be-null-in-onstartcommand

반응형