onMessageReceived触发时如何进行数据库操作?

How to perform a database operation when onMessageReceived is triggered?

我正在尝试在 Firebase 云消息传递执行时更新我的​​ Room 数据库 onMessageReceived

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

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

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

这个 db 变量是 public 和静态的,所以通常我从我的应用程序的任何地方访问它,因为它总是可用的。

但是,在这种情况下不可用,我也尝试从 onMessageReceived 创建一个新的连接实例,但没有成功,但这是不可能的,因为我不能使用 getApplicationContext()方法,因为没有Activity.

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

onMessageReceivedFirebaseMessagingService中的一个方法,显然是一个服务。 服务也是上下文。因此,不必将您的 MainActivity 用作上下文。

在您的 onMessageReceived 方法中,只需使用:

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