3

Google Play Vitals 报告了在运行 Android 8.0 和 8.1 的 Android 设备上发生的崩溃,这些设备具有类似的结构:

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:5743)
  at android.app.ActivityThread.-wrap1 (Unknown Source)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1656)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6494)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:438)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:807)
Caused by: java.lang.IllegalStateException: 
  at android.app.ContextImpl.getSharedPreferences (ContextImpl.java:387)
  at android.app.ContextImpl.getSharedPreferences (ContextImpl.java:372)
  at android.content.ContextWrapper.getSharedPreferences (ContextWrapper.java:167)
  at foo.bar.core.data.UserPreferences.<init> (UserPreferences.java:11)
  at foo.bar.android.core.di.AppModule.a (AppModule.java:7)
  at foo.bar.android.core.di.AppModule_ProvideUserPreferencesFactory.a (AppModule_ProvideUserPreferencesFactory.java:10)
  at foo.bar.android.core.di.AppModule_ProvideUserPreferencesFactory.get (AppModule_ProvideUserPreferencesFactory.java)
  at dagger.internal.DoubleCheck.get (DoubleCheck.java:15)
  at foo.bar.android.core.di.DaggerAppComponent.n (DaggerAppComponent.java:2)
  at foo.bar.android.Application.d (FooApplication.java:9)

奇怪的是,我创建的SharedPreferences方式非常简单:

private val userPreferences: SharedPreferences = context.getSharedPreferences(USER_PREFS_FILE_NAME, Context.MODE_PRIVATE)

另一个奇怪的事情是我在 Android 8.1 上并且我没有注意到任何崩溃,而 Play Vitals 报告它们发生在与我一直使用的设备完全相同的设备上:Pixel 2 XL,Android 8.1(还有其他有该问题的设备)。

我是否错过了SharedPreferencesAndroid 8.0 中引入的一些明显变化(崩溃发生在 8.0 和 8.1 上,但大约 96% 的崩溃发生在 8.1 上)?

4

0 回答 0