我想保存值到SharedPreferences当FCM在后台接收消息(在Android模拟器上测试):
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
prefs = await SharedPreferences.getInstance();
if (await prefs.setString("test", "test")) {
debugPrint("Success");
} else {
debugPrint("Error");
}
debugPrint("Keys: ${prefs.getKeys().toString()}");
}
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
Future<void> _printKeys() async {
prefs = await SharedPreferences.getInstance();
setState(() {
debugPrint("BUTTON Keys: ${prefs.getKeys().toString()}");
});
}
ElevatedButton(
onPressed: () async => await _printKeys(),
child: const Text("get SP keys"))
当应用程序在后台时,收到消息,然后我把应用程序放到前台,按下"获取SP键"按钮。密钥不存在。日志:
一个三个三个一个
重启应用程序时,"测试"键在SharedPreferences中可用。
出了什么问题,App如何从SharedPreferences中获得一致的值?
1条答案
按热度按时间2wnc66cl1#
OK终于找到了解决方案。在描述的情况下,SharedPreferences似乎不同步。我所做的是在两者之间添加X1 M0 N1 X,它工作了:-)
奇怪,因为应用程序应该只有一个SP示例。