jpush / jpush-react-native

JPush's officially supported React Native plugin (Android & iOS). 极光推送官方支持的 React Native 插件(Android & iOS)。
http://docs.jiguang.cn
MIT License
1.35k stars 340 forks source link

android 异常崩溃 #467

Closed mx1700 closed 6 years ago

mx1700 commented 6 years ago

你的运行环境

实际效果

安卓出现随机崩溃

重现步骤

安卓app启动后马上后退退出(进程不会杀掉),然后再打开,多次重复 随机出现崩溃异常

我是用了 react-native-navigation,在应用启动时调用了 setAlias 我想可能是 setAlias 还没返回的时候退出了,回调到达时由于reactjs 环境已经销毁所以报错了 但是我并不熟悉 android 代码,所以无法下一步调试解决

Debug logs

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.util.SparseArray.get(int)' on a null object reference at cn.jpush.reactnativejpush.JPushModule$MyJPushMessageReceiver.onAliasOperatorResult(JPushModule.java:654) at cn.jpush.android.a.a$a.run(SourceFile:76) at android.os.Handler.handleCallback(Handler.java:808) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:166) at android.os.HandlerThread.run(HandlerThread.java:65)

KenChoi1992 commented 6 years ago

@mx1700 下个版本修复。

xwartz commented 6 years ago

@KenChoi1992 请问这个问题修复了吗?

mx1700 commented 6 years ago

@xwartz 你可以参考我的临时的解决办法: 修改 jpush-react-native/android/src/main/java/cn/jpush/reactnativejpush/JPushModule.java 85 行

    if (null != sCacheMap) {
         sCacheMap.clear();
-        sCacheMap = null;                   //修改成下边
+        sCacheMap = new SparseArray<>();
    }
KenChoi1992 commented 6 years ago

新版本修复了