Android 应用程序关闭时无法在SQLite或SharedReferences中存储数据
我已经试过了上面提供的大多数解决方案。但是,无法解决此问题。 问题是:当FCM通知到达时,我正在启动将通知内容存储到sqlite的服务。虽然它在应用程序打开时工作,但在应用程序关闭时不工作 这是我用来存储在sqlite中的服务类。--> 任何帮助都将不胜感激。 谢谢!:) 来自FCM 要接收消息,请使用扩展Android 应用程序关闭时无法在SQLite或SharedReferences中存储数据,android,sqlite,service,sharedpreferences,firebase-cloud-messaging,Android,Sqlite,Service,Sharedpreferences,Firebase Cloud Messaging,我已经试过了上面提供的大多数解决方案。但是,无法解决此问题。 问题是:当FCM通知到达时,我正在启动将通知内容存储到sqlite的服务。虽然它在应用程序打开时工作,但在应用程序关闭时不工作 这是我用来存储在sqlite中的服务类。--> 任何帮助都将不胜感激。 谢谢!:) 来自FCM 要接收消息,请使用扩展FirebaseMessagingService的服务。您的服务应该覆盖onMessageReceived和onDeletedMessages回调。它应在收到后10秒内处理任何信息。之后,An
FirebaseMessagingService
的服务。您的服务应该覆盖onMessageReceived
和onDeletedMessages
回调。它应在收到后10秒内处理任何信息。之后,Android不保证执行,并且可以随时终止您的进程。如果您的应用程序需要更多时间来处理消息,请使用Firebase作业调度器
onMessageReceived
适用于大多数邮件类型,但以下例外情况除外:
通知
当您的应用程序
处于
背景
。在这种情况下,通知将被发送到
设备的系统托盘
。用户点击通知
打开应用程序
默认情况下启动程序
消息
同时包含通知
和数据
有效负载
背景
和前景
。在这种情况下,通知是
传送到设备的系统托盘
,并且数据
有效负载
在您的启动器活动的意图的附加部分中交付
总之:
App state | Notification | Data | Both
----------------------------------------------------------------------------
Foreground | onMessageReceived | onMessageReceived | onMessageReceived
----------------------------------------------------------------------------
Background | System tray | onMessageReceived | Notification: system tray
Data: in extras of the intent.
解决方案:
App state | Notification | Data | Both
----------------------------------------------------------------------------
Foreground | onMessageReceived | onMessageReceived | onMessageReceived
----------------------------------------------------------------------------
Background | System tray | onMessageReceived | Notification: system tray
Data: in extras of the intent.
根据上述指南,客户端应用程序似乎在onMessageReceived()
的前台
和后台
状态中接收到一条数据
消息。因此,如果您想要
要同时处理前台
和后台
状态的消息,则应发送带有数据
有效负载的推送消息
下面是一个关于FCM的好教程(通知
和数据有效负载
):
希望这对FCM有所帮助
要接收消息,请使用扩展FirebaseMessagingService
的服务。您的服务应该覆盖onMessageReceived
和onDeletedMessages
回调。它应在收到后10秒内处理任何信息。之后,Android不保证执行,并且可以随时终止您的进程。如果您的应用程序需要更多时间来处理消息,请使用Firebase作业调度器
onMessageReceived
适用于大多数邮件类型,但以下例外情况除外:
通知
当您的应用程序
处于
背景
。在这种情况下,通知将被发送到
设备的系统托盘
。用户点击通知
打开应用程序
默认情况下启动程序
消息
同时包含通知
和数据
有效负载
背景
和前景
。在这种情况下,通知是
传送到设备的系统托盘
,并且数据
有效负载
在您的启动器活动的意图的附加部分中交付
总之:
App state | Notification | Data | Both
----------------------------------------------------------------------------
Foreground | onMessageReceived | onMessageReceived | onMessageReceived
----------------------------------------------------------------------------
Background | System tray | onMessageReceived | Notification: system tray
Data: in extras of the intent.
解决方案:
App state | Notification | Data | Both
----------------------------------------------------------------------------
Foreground | onMessageReceived | onMessageReceived | onMessageReceived
----------------------------------------------------------------------------
Background | System tray | onMessageReceived | Notification: system tray
Data: in extras of the intent.
根据上述指南,客户端应用程序似乎在onMessageReceived()
的前台
和后台
状态中接收到一条数据
消息。因此,如果您想要
要同时处理前台
和后台
状态的消息,则应发送带有数据
有效负载的推送消息
下面是一个关于FCM的好教程(通知
和数据有效负载
):
希望这将有助于~您发送数据或通知的类型检查这是通知。并且在接收通知方面没有问题。:)FCM有两种类型的通知数据和通知,在通知消息的情况下,当应用程序位于后台时,它不会调用onMessageReceived,因此这很重要bro:)如果您需要,请检查此项,然后使用数据消息,该消息将在客户端完全处理,它将在前台和后台调用onMessageReceived在这里说明我知道的更多,你必须在上面搜索@Pavan谢谢你!!是的,这就是问题所在。我在通知中改为“数据”载体,它起作用了:d您发送数据或通知的消息类型是什么?检查这是通知。并且在接收通知方面没有问题。:)FCM有两种类型的通知数据和通知,在通知消息的情况下,当应用程序位于后台时,它不会调用onMessageReceived,因此这很重要bro:)如果您需要,请检查此项,然后使用数据消息,该消息将在客户端完全处理,它将在前台和后台调用onMessageReceived在这里说明我知道的更多,你必须在上面搜索@Pavan谢谢你!!是的,这就是问题所在。我在通知中改成了“数据”载体,效果很好:非常感谢,伙计!它成功了。我改成了信息中的数据,效果很好:D。非常感谢,伙计!它起作用了。我改成了信息中的数据,它就像魅力:D。