问题描述
FirebaseMessagingService
是否像 IntentService
一样在后台运行?
Does the FirebaseMessagingService
run in the background similar to how an IntentService
operates?
我看到 FirebaseMessagingService
范围 Service
不在后台运行,但我想确定我是否应该在FirebaseMessagingService
异步或同步.
I see that FirebaseMessagingService
extents Service
which does not run in the background, but I'd like to be sure whether or not I should be doing any work inside the FirebaseMessagingService
asynchronously or synchronously.
谢谢
回答:
FirebaseMessagingService
的方法 onMessageReceived(RemoteMessage message)
NOT 在主线程上调用 - 所以所有工作都应该同步进行.
FirebaseMessagingService
's method onMessageReceived(RemoteMessage message)
is NOT called on the main thread - so all work should be synchronously.
推荐答案
FirebaseMessagingService
的方法 onMessageReceived(RemoteMessage message)
被在后台"调用(不在UI/主线程).如果您尝试在 onMessageReceived(RemoteMessage message)
中进行异步工作,您将收到一条错误消息:
FirebaseMessagingService
's method onMessageReceived(RemoteMessage message)
is called "in the background" (not on the UI/Main thread). If you try do asynchronous work inside onMessageReceived(RemoteMessage message)
you will receive an error saying:
方法execute必须从主线程调用,当前推断线程为worker.
所以在 onMessageReceived(RemoteMessage message)
内完成的所有工作都应该同步完成,因为它在自己的后台工作线程中.
So all work that is done within onMessageReceived(RemoteMessage message)
should be done synchronously because it's in its own background worker thread.
这篇关于FirebaseMessagingService 默认在后台运行吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!