我正在尝试在Firebase Cloud Messaging onMessageReceived
执行时更新我的Room
数据库。
当我的应用程序关闭时出现问题,因为在这种情况下,我的数据库连接尚未创建,因此会引发异常。
我正在从 MainActivity
创建 Room 数据库连接实例,该实例在用户每次启动应用程序时启动,使用以下行:
db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database").build();
这个db
var 是公共和静态的,所以通常我从我的应用程序中的任何位置访问它,因为总是可用的。
我也尝试从onMessageReceived
创建新的连接实例,但没有成功,但这是不可能的,因为我无法使用getApplicationContext()
方法,因为没有活动。
有什么解决方法吗?提前谢谢你!
onMessageReceived
是FirebaseMessagingService
中的一种方法,显然是一种服务。服务也是一种上下文。因此,不必使用您的主活动作为上下文。
在onMessageReceived
方法中,只需使用:
Room.databaseBuilder(this, AppDatabase.class, "database").build();