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.
有什么解决方法吗?
提前致谢!
onMessageReceived
是FirebaseMessagingService
中的一个方法,显然是一个服务。
服务也是上下文。因此,不必将您的 MainActivity 用作上下文。
在您的 onMessageReceived
方法中,只需使用:
Room.databaseBuilder(this, AppDatabase.class, "database").build();
我正在尝试在 Firebase 云消息传递执行时更新我的 Room
数据库 onMessageReceived
。
问题出现在我的应用程序关闭时,因为在这种情况下,我的数据库连接尚未创建,所以会抛出异常。
我正在从 MainActivity
创建 Room 数据库连接实例,每次用户启动应用程序时都会启动该实例,使用以下行:
db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database").build();
这个 db
变量是 public 和静态的,所以通常我从我的应用程序的任何地方访问它,因为它总是可用的。
但是,在这种情况下不可用,我也尝试从 onMessageReceived
创建一个新的连接实例,但没有成功,但这是不可能的,因为我不能使用 getApplicationContext()
方法,因为没有Activity.
有什么解决方法吗? 提前致谢!
onMessageReceived
是FirebaseMessagingService
中的一个方法,显然是一个服务。
服务也是上下文。因此,不必将您的 MainActivity 用作上下文。
在您的 onMessageReceived
方法中,只需使用:
Room.databaseBuilder(this, AppDatabase.class, "database").build();