为了账号安全,请及时绑定邮箱和手机立即绑定

由于 NPE 导致 Activity 恢复时崩溃

由于 NPE 导致 Activity 恢复时崩溃

鸿蒙传说 2023-03-23 15:12:53
我发现我的应用程序的用户发生了一些崩溃,这与配置更改和正在重新创建的活动有关,我无法重现它。这个问题似乎在 Android 类中,因此我没有机会直接修复它。Fatal Exception: java.lang.NullPointerException: Attempt to read from field 'float android.content.res.Configuration.fontScale' on a null object reference       at android.content.res.Configuration.setTo + 904(Configuration.java:904)       at android.content.res.Configuration.(Configuration.java:891)       at android.app.ActivityThread.createNewConfigAndUpdateIfNotNull + 5133(ActivityThread.java:5133)       at android.app.ActivityThread.performConfigurationChanged + 5203(ActivityThread.java:5203)       at android.app.ActivityThread.performConfigurationChangedForActivity + 5117(ActivityThread.java:5117)       at android.app.ActivityThread.handleResumeActivity + 3994(ActivityThread.java:3994)       at android.app.ActivityThread.handleLaunchActivity + 3070(ActivityThread.java:3070)       at android.app.ActivityThread.handleRelaunchActivity + 5006(ActivityThread.java:5006)       at android.app.ActivityThread.-wrap21(ActivityThread.java)       at android.app.ActivityThread$H.handleMessage + 1665(ActivityThread.java:1665)       at android.os.Handler.dispatchMessage + 102(Handler.java:102)       at android.os.Looper.loop + 154(Looper.java:154)       at android.app.ActivityThread.main + 6816(ActivityThread.java:6816)       at java.lang.reflect.Method.invoke(Method.java)       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 1563(ZygoteInit.java:1563)       at com.android.internal.os.ZygoteInit.main + 1451(ZygoteInit.java:1451)由于我无法重新创建它,因此在 Goggle issuetracker 上打开错误报告将毫无用处。有没有人知道这里发生了什么?有没有人遇到过这个?显然存在一个错误,因为ActivityThread#createNewConfigAndUpdateIfNotNull(Configuration, Configuration)负责将null值传递给的方法的Configuration#setTo(Configuration)第一个参数被注释为@NonNull.崩溃主要发生在 Android 7.1.1 上,该应用程序针对 SDK 28。
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

此问题仅发生在 Android 7.0 及更高版本中...当使用夜间模式创建应用程序并且屏幕旋转(配置更改)时,它可能是 DayNight 主题中的错误。



查看完整回答
反对 回复 2023-03-23
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我在 android 7.1 上也有这个问题,但我发现我的活动创建了两次,因为setTheme(R.style.custom_style)在修复此问题后调用super.onCreate(savedInstanceState)配置更改时崩溃不再发生

希望这有帮助


查看完整回答
反对 回复 2023-03-23
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

我对这个问题做了很多研究,我注意到这个问题只发生在 Android 7 和 DayNight 主题中。为了解决这个问题,在Android 7中不能使用DayNight主题,比如下面的代码:

 if (Build.VERSION.SDK_INT==Build.VERSION_CODES.N||Build.VERSION.SDK_INT==Build.VERSION_CODES.N_MR1){
            AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
        }

我的问题通过添加上面的代码解决了我希望这个解决方案对您有所帮助。


查看完整回答
反对 回复 2023-03-23
  • 3 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信