Android FirebaseMessagingService是意向服务吗?

Android FirebaseMessagingService是意向服务吗?,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,我想将服务的onMessageReceived中接收到的所有消息保存在SQLite db中 我计划打开数据库,插入数据并关闭数据库。这对于intent服务很好,因为对onMessageReceived的所有调用都将排队,从而逐个执行 但是,如果对多条消息同时调用onMessageReceived,则可能会导致在另一个调用尝试写入时关闭数据库的问题,从而导致问题 有人能证实我应该期待什么样的行为吗 如果它不是一个意图服务,我可能必须查看DB单例模式和同步块您可以检查LinkedBlockingDe

我想将服务的onMessageReceived中接收到的所有消息保存在SQLite db中

我计划打开数据库,插入数据并关闭数据库。这对于intent服务很好,因为对onMessageReceived的所有调用都将排队,从而逐个执行

但是,如果对多条消息同时调用onMessageReceived,则可能会导致在另一个调用尝试写入时关闭数据库的问题,从而导致问题

有人能证实我应该期待什么样的行为吗


如果它不是一个意图服务,我可能必须查看DB单例模式和同步块

您可以检查
LinkedBlockingDeque
类,它将对您的请求进行排队,并且可以在后台顺序执行
检查以下矿井样本等级-

公共类处理器实现可运行{
private final LinkedBlockingDeque mTaskQueue=new LinkedBlockingDeque();
私有布尔值mExecuteTask=true;
@凌驾
公开募捐{
Process.setThreadPriority(Process.THREAD\u PRIORITY\u后台);
//如果需要,你可以设置一些终止条件
while(mExecuteTask){
任务;
试一试{
//如有必要,等待元素变为可用
task=(task)mTaskQueue.take();
}捕捉(中断异常e){
continue;//在断开时重新测试条件
}
如果(任务!=null){
task.runnable.run();
}
}
}
//调用此方法将Runnable放入队列。
公共同步的void put(int-id,Runnable){
试一试{
任务=新任务();
task.runnable=runnable;
task.id=id;//someUniqueId以避免重复
//检查队列中已存在的任务的Id
mTaskQueue.addLast(任务);
}捕获(非法状态){
抛出新错误;
}
}
私有静态类任务{
公共可运行;
//任务的唯一Id
公共int id;
}
}

目前,
FirebaseMessagingService
直接扩展了
服务
,因此它不是
IntentService


快照:


你查过firebase的离线使用吗?那是一项服务。。。但它是否同时接收消息?据我所见,一条接一条地收到多条信息。然而,我不太确定它是否会一直如此。@JadavLalit我认为firebase db的持久性不会帮助我使用FCM。这就是你所指的吗?只要
Log.d()
当前线程在
onMessageReceived
中的值,你就会自己看到
thread
你在
logcat
上看到了什么?