我有一个错误,我无法在命令或模拟器上重现,但似乎是在物理设备中长时间独自离开应用程序后发生的。
所有片段仍然是响应式的,但消息似乎不会从一个片段传递到另一个片段。
我最好的猜测是,某种垃圾收集可能会破坏链接。非常模糊的问题,但我很绝望:
什么可能导致这种“很长一段时间”(即几小时)后发生的错误?如果我怀疑应用程序没有成功“恢复”,我应该在我编写的代码中寻找什么?
此外,adb logcat
通过usb debug连接物理设备时,应显示我使用log.e()
打印的任何错误消息,对吗?
对于未来的googlers和其他新手编码器 - 今天我了解到,保存对您创建的片段的引用。或者,不要使片段成为局部变量。我不需要对片段的引用,只需要包含视图。结果,片段被垃圾收集并且在恢复时重新创建了新片段,从而破坏了通信链接。
答案 0 :(得分:1)
声音就像活动(/片段)不再保存在内存中 - Android框架可能会在后台或后台堆栈中破坏您的活动,您应该编写活动以便它们在此时正常运行发生。为了超越此覆盖onSaveInstanceState
方法。
您可以将其发生并尝试通过开发者选项重现 - >不要保持活动