Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 触发onMessageReceived时如何执行数据库操作?_Android_Firebase Cloud Messaging_Android Room - Fatal编程技术网

Android 触发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()

当Firebase Cloud Messaging执行onMessageReceived时,我正在尝试更新我的
房间
数据库

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

我正在从
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方法的上下文打开数据库。