最近在浏览项目里 Umeng 统计的崩溃日志时,发现一个空指针异常:
-
java.lang.NullPointerException: Attempt to invoke virtual method 'androidx.fragment.app.FragmentManager androidx.fragment.app.FragmentActivity.getSupportFragmentManager()' on a null object reference
-
at com.yhmedia.uking.dialog.PayVipDialog.paySuccess(PayVipDialog.java:90)
-
at com.yhmedia.uking.util.PayUtil.reportPaySuccess(PayUtil.java:239)
-
at com.yhmedia.uking.util.PayUtil.onPaySuccess(PayUtil.java:229)
-
at com.yhmedia.google_pay_library.GPayUtil.postPayStateEvent(GPayUtil.java:384)
溯源发现是异步的问题,dialog 依存的 activity 销毁导致上下文不存在
/**
* 防止因 getactivity 为空崩溃
*
* @return
*/
protected FragmentActivity getActivityNonNull() {
if (super.getActivity() != null) {
return super.getActivity();
} else {
throw new RuntimeException("null returned from getActivity()");
}
}
对 getActivity 做了二次判断防止崩溃,更深的原因没有探究,如果有大神了解还请指正。