FirebaseMessagingService默认情况下是在后台运行吗?

Sak*_*boy 5 android android-service firebase android-intentservice firebase-cloud-messaging

FirebaseMessagingService在后台运行是否类似于IntentService运行方式?

我看到那些不在后台运行的FirebaseMessagingService扩展区Service,但是我想确定我是否应该在FirebaseMessagingService异步或同步中进行任何工作.

谢谢

Sak*_*boy 12

FirebaseMessagingService的方法onMessageReceived(RemoteMessage message)称为"在后台"(不在UI /主线程上).如果您尝试在内部进行异步工作onMessageReceived(RemoteMessage message),则会收到错误消息:

必须从主线程调用方法execute,当前推断的线程是worker.

所以在其中完成的所有工作都onMessageReceived(RemoteMessage message)应该同步完成,因为它在自己的后台工作线程中.

  • 但是有一个旁注:_对于提供onMessageReceived的所有邮件,您的服务应在收到后10秒内处理任何邮件.如果您的应用需要更多时间来处理邮件,请使用Firebase作业调度程序._ (3认同)

Dav*_*ser 5

AService不会“在后台运行”。AService只是一个类的实例(即:一个对象)。a 的方法Service可以在主(UI)线程或后台(工作线程)线程上运行。这一切都取决于如何称呼它们。

该服务的生命周期方法onCreate()onStartCommand()onDestroy()都呼吁主(UI)线程。但是在您的Service线程中,您可以启动其他线程并在这些线程上执行其他操作。

  • 很好的答案大卫。你今天教会了我一些关于服务的事情。 (4认同)
  • @FrankvanPuffelen,我不知道......充满sn 的答案并没有太大帮助。有点只是对“服务”的平庸解释。甚至没有解决被问到的问题,只是在圈子里谈论“服务”类。不知道为什么他甚至费心发布答案。 (3认同)