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

时间:2018-01-17 09:10:10

标签: android firebase-cloud-messaging android-room

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

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

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

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

这个db var是公共的和静态的,所以我通常会从应用程序的任何地方访问它,因为它始终可用。

但是,在这种情况下不可用,我也尝试从onMessageReceived创建一个新的连接实例,但没有成功,但由于我无法使用{ {1}}方法,因为没有活动。

有任何解决方法吗? 提前谢谢!

1 个答案:

答案 0 :(得分:2)

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

onMessageReceived方法中,只需使用:

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