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