我在 Google Play 中有一堆痕迹,其中应用程序类的静态成员似乎为空。
我发现的所有相关帖子都是关于存储数据的,但这些变量不是数据,它们是 3rd 方 SDK 实例或其他与应用程序一起使用单例模式的关键对象。
类中使用的数据Activity
存储在数据库中,并且没有使用静态引用。
这些痕迹根本不会报告给 Fabric,这很奇怪,因为它是在Application
onCreate
方法中初始化的。
跟踪表明FirebaseMessagingService
onMessageReceived
触发方法时静态变量为空,我需要将消息传递给 3rd 方 SDK,但由于该实例为空,因此应用程序崩溃。
仅在 Android OS 6.0 上看到的痕迹
有没有关于如何处理这个操作系统版本如此激进的归零静态成员的解决方案?
谢谢。
这是我使用的示例最低代码:
应用类:
@Override
public void onCreate() {
Engine.init();
}
发动机类:
private static Engine sInstance;
private 3rdParty m3rdParty;
private Engine() {
m3rdParty = new 3rdParty();
}
public static void init() {
if (sInstance == null) {
sInstance = new Engine();
}
}
public static onMessageReceived(RemoteMessage remoteMessage) {
sInstance.m3rdParty.onMessageReceived(remoteMessage);
// Above line crashes with NPE, sEngine or m3rdParty is never set to null in code
}
扩展 FirebaseMessagingService:
public void onMessageReceived(RemoteMessage remoteMessage) {
Engine.onMessageReceived(remoteMessage);
}