2016-12-15 59 views
0

我有一個錯誤,我無法在命令或模擬器​​上重現,但似乎發生在物理設備上長時間離開應用程序後。Android BUG很長時間後

所有片段都會繼續響應,但消息似乎不會從一個片段傳遞到另一個片段。

我最好的猜測是,某種垃圾收集可能會破壞鏈接。非常模糊的問題,但我絕望:

  • 什麼可能導致這樣的一個錯誤發生「很長時間後」(即小時)?如果我懷疑應用程序沒有成功「恢復」,我應該在我寫的代碼中尋找什麼?

  • 另外,adb logcat當物理設備通過USB連接時調試應該顯示任何錯誤消息,我打印log.e(),是否正確?


對於未來的Google員工和其他新手程序員 - 今天我才知道,保存引用您創建的片段。或者,不要創建片段局部變量。我不需要對片段的引用,只有包含的視圖。結果,片段被垃圾收集,並且在恢復時重新創建了一個新片段,從而打破了通信鏈接。

+0

嗯,這是一個含糊不清的問題的確!請給我們一些關於您的應用程序的更多信息!是否有任何後臺進程在運行,服務,網絡通信等等。只要給我們一些背景! –

回答

1

聽起來像活動(/片段)不再保存在內存中 - Android框架可能隨時在後臺或後臺堆棧中摧毀您的活動,並且您應該編寫活動,以便在發生這種情況時能正確行爲。爲了擊敗這個覆蓋onSaveInstanceState方法。

可以導致它發生,嘗試通過開發人員選項重現它 - >不保留活動

+0

aaaa不錯,我會給你一個鏡頭。謝謝! – q335r49

+0

是的 - 該選項是def重現它。謝謝! – q335r49

+0

不客氣!祝你好運! – AsfK