【问题标题】:Handle onMessageReceived() and onTokenRefresh() even if the app is not running即使应用程序没有运行,也要处理 onMessageReceived() 和 onTokenRefresh()
【发布时间】:2016-06-28 14:39:08
【问题描述】:

我有一个包含 2 项服务的应用程序:

MessagingService extends FirebaseMessagingService

InstanceIDService extends FirebaseInstanceIdService

AndroidManifest.xml 文件中有声明。 问题是当我的应用程序的进程被强制关闭时,服务也会被杀死。

我希望他们不要被杀。我听说过Service 类的START_STICKY 标志,但我不能在这些服务中重写onStartCommand() 方法以返回这个标志...

【问题讨论】:

  • 这些服务将由始终在设备上运行的 Google Play 服务启动。您不必也不应该自己启动/停止这些服务。
  • @ArthurThompson 在我的 onMessageReceived() 方法中,我放置了一个日志,当我杀死我的应用程序并发送下游通知时,日志没有被执行......这就是为什么我认为服务在我的应用程序所在的地方被杀死。
  • onMessageReceived 在发送数据消息时总是会被调用,但在发送通知消息时有时不会被调用。您要发送哪种类型的下游消息?
  • 这种情况发生在多台设备上还是仅在一台设备上,我想知道设备上的操作系统是否可能会限制在相应的应用程序被杀死时可以启动哪些服务。设备上可能存在允许/禁止此操作的设置。
  • 根据我的经验,在设置中强制关闭会停止服务。但滑动关闭不应该。 @ArthurThompson 某处有医生吗?如何确保我的服务已重新启动?谢谢。

标签: java android-studio service firebase-cloud-messaging


【解决方案1】:

为了回答 cmets,我没有找到任何“解决方案”来解决我的问题,因为这不是一个问题。如果用户想关闭我的应用程序,他有权关闭。

由于我的onMessageReceived()方法在我的应用程序中属于我的MessagingService,如果应用程序被用户强制关闭,应用程序和服务都不会重新启动

正如 Weishi Zeng 在 cmets 中所说,“设置强制关闭”会停止我的应用程序(包括服务)的所有内容,因此 Google Play 服务会收到通知,但我的应用程序在这里看不到它。那么onMessageReceived()方法就不会执行了。 但是,该服务并未通过“滑动关闭”关闭。

最终,我不想找到任何解决方法,因为这会与用户的选择相矛盾。

here

【讨论】:

  • 还有一些设备,即使应用程序仍然只是简单地刷掉,即使它没有强制关闭,设备本身也会阻止它接收消息。其他人说这不可能,因为像 WhatsApp 这样的应用程序能够做到这一点。到目前为止,我之所以了解到这一点,是因为设备制造商已将大多数知名应用列入白名单,以使其成为可能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-14
相关资源
最近更新 更多