0

FirebaseMessagingServiceIntentService이 작동하는 것과 유사한 백그라운드에서 실행됩니까?FirebaseMessagingService는 기본적으로 백그라운드에서 실행됩니까?

내가 볼 것을 FirebaseMessagingService 확장 백그라운드에서 실행되지 않습니다,하지만 난 비동기 또는 동기식 FirebaseMessagingService 내부 작업을 수행해야하는지 여부를 확인하고 싶습니다 Service.

답변

6

FirebaseMessagingService의 방법 onMessageReceived(RemoteMessage message)은 백그라운드에서 (UI/기본 스레드가 아니라) 백그라운드에서 호출됩니다. onMessageReceived(RemoteMessage message) 내부에서 비동기 작업을 시도하면 다음과 같은 오류 메시지가 표시됩니다.

메서드 실행은 현재 주 스레드에서 호출해야하며 현재 유추 된 스레드는 worker입니다.

onMessageReceived(RemoteMessage message) 내에서 수행되는 모든 작업은 자체 백그라운드 작업자 스레드에 있기 때문에 동기식으로 수행해야합니다.

3

Service는 "백그라운드에서 실행"하지 않습니다 감사합니다. Service은 클래스의 인스턴스입니다 (예 : 객체). Service의 메서드는 기본 (UI) 스레드 또는 배경 (작업자) 스레드에서 실행할 수 있습니다. 그것은 모두 어떻게 호출되는지에 달려 있습니다.

서비스의 수명주기 방법 onCreate(), onStartCommand(), onDestroy()은 모두 주 (UI) 스레드에서 호출됩니다. 하지만 Service에서 다른 스레드를 시작하고 해당 스레드에서 다른 작업을 수행 할 수 있습니다.

+0

네, 그건 안드로이드'Service'에 대해서는 사실입니다 만,'FirebaseMessagingService'에 대해서는 그렇지 않다고 생각합니다. 자세한 내용은 내 대답을 참조하십시오. – Sakiboy

+2

위대한 대답 데이비드. 오늘 서비스에 대해 뭔가 가르쳐 줬어. –

+0

@FrankvanPuffelen, 나도 몰라 ... sn 대답으로 가득 찬 도움이 아니야. Kinda는 '서비스'에 대한 평범한 설명입니다. 물어 보는 질문에 대해서도 언급하지 않고, 단지'Service' 클래스에 대해 이야기합니다. 왜 그가 심지어 대답을 게시하는 것을 귀찮게하는지 확실하지 않습니다. – Sakiboy