我正在尋找技術答案,以瞭解android robospice庫如何管理活動生命週期。從入門頁面:robospice如何管理活動生命週期?
https://github.com/octo-online/robospice/wiki/Starter-Guide
「作爲一個內部類的活動(或其他方面),加一個RequestlListener將更新你的UI不用擔心內存泄漏,RoboSpice管理您的活動的生命週期。」
我的問題是,robospice如何自動更新請求偵聽器,以便在旋轉之後和活動被銷燬並重新創建爲新實例之後,仍然能夠使用正確的上下文調用正確的偵聽器?
我一直在試圖反向工程的源代碼,但沒有找到答案尚未:
https://github.com/octo-online/robospice
所以如果你沒有提供requestCacheKey,並且同時有多個同一個Activity運行的實例,那麼addListenerIfPending仍然能夠正常工作嗎?或者在這種情況下沒有足夠的信息?這可能不太可能,但我很好奇。 – craigrs84
@snicolas,我很好奇,如果你沒有調用shouldStop()(或非異步方法)庫不會回調那些註冊到Activities,Fragments,Services等的監聽器?如果不通過源代碼挖掘太多,並且基於我的早期使用和庫的測試,我會收到一個異常,當我收到一個對象已經「死亡」的回調。此外,圖書館是偉大的,請保持良好的工作! – AllDayAmazing
如果你不調用shouldStop,那麼監聽器將被觸發。這可能會導致崩潰和內存泄漏,因爲經常監聽器是內部類,並且對活動實例持有引用,這些引用已被銷燬,並且如果您在偵聽器中執行findViewById等操作,它甚至會崩潰。我想你明白了,只是想澄清事情。 – Snicolas