如何在触发消息接收时执行数据库操作



我正在尝试在Firebase Cloud Messaging onMessageReceived执行时更新我的Room数据库。

当我的应用程序关闭时出现问题,因为在这种情况下,我的数据库连接尚未创建,因此会引发异常。

我正在从 MainActivity 创建 Room 数据库连接实例,该实例在用户每次启动应用程序时启动,使用以下行:

db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database").build();

这个db var 是公共和静态的,所以通常我从我的应用程序中的任何位置访问它,因为总是可用的。

但是,在这种情况下不可用,

我也尝试从onMessageReceived创建新的连接实例,但没有成功,但这是不可能的,因为我无法使用getApplicationContext()方法,因为没有活动。

有什么解决方法吗?提前谢谢你!

onMessageReceivedFirebaseMessagingService中的一种方法,显然是一种服务。服务也是一种上下文。因此,不必使用您的主活动作为上下文。

onMessageReceived方法中,只需使用:

Room.databaseBuilder(this, AppDatabase.class, "database").build();

相关内容

  • 没有找到相关文章

最新更新