Android导航架构:“不保留活动”选项时崩溃

时间:2018-10-24 23:52:46

标签: android android-architecture-components android-architecture-navigation

我当前在一个项目中使用Android Arch Navigation(1.0.0-alpha06)。但是我的Crashlytics有时会遇到相同的崩溃:

java.lang.RuntimeException: Unable to start activity ComponentInfo{*.*.*.MainActivity}: android.view.InflateException: Binary XML file line #29: Binary XML file line #29: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #29: Binary XML file line #29: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #29: Error inflating class fragment
Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@1e9584c: Unmarshalling unknown type code 7274595 at offset 516

因此,在探究了为什么我的MainActivity发生多次崩溃之后,我将设备设置为不保留活动(开发人员选项)。和班!每次我将我的应用程序发送到后台并返回时,应用程序崩溃。

onSaveInstanceState/onRestoreInstanceState方法上没有任何设置。所以我不知道在哪里看。

在启用或未启用proguard的情况下都会发生这种情况(我在调试版本和发行版中都对其进行了测试),因此可以排除缺少的proguard规则。

其他可能有用的信息:我的应用程序正在使用android.arch库(MVVM)。

编辑:我无权访问片段管理器本身,导航库是负责片段的人,因此与片段充气有关的任何其他错误都不相关

2 个答案:

答案 0 :(得分:0)

好吧,我终于找到了崩溃的原因...这是我使用的一个自定义视图库,我没有正确管理它的实例还原逻辑。

我发现崩溃仅发生在应用程序的两个部分中,这向我指出了可能是问题所在。

最后,更多的问题是没有足够的堆栈跟踪来查看问题发生的位置...

答案 1 :(得分:-2)

请记住,除非您重写活动和片段中的方法不执行任何操作,否则Android仍会执行一些保存实例状态工作。

  @Override
  protected void onSaveInstanceState(Bundle outState) {
    // don't restore state
  }

在许多情况下,由于许多奇怪的错误,我们这样做。含义是,如果您的应用程序从内存中弹出,则下次访问该应用程序时,它将100%重新启动。