2012-01-14 51 views

回答

1

FragmentActivity被破壞,就應該對所有Loader情況下,它創建的,這將在Loader實現中調用onReset(),調用reset()SQLiteCursorLoader電話close()任何優秀Cursor

請注意,當活動被破壞時會發生這種情況。看起來沒有Loader等同於當活動暫停時去激活Cursor的管理Cursor概念。這太遺憾了,因爲這是一個很好的堆管理功能,我會思考如何最好地支持這一點。

如果您發現證據表明某些內容正在泄漏,file an issue in the LoaderEx project將提供有關如何重現錯誤的詳細信息。

+0

+1,但是如果我理解正確的話,'Loader'的一個優點就是數據(在這種情況下爲'Cursor')在Activity被破壞後保留 - 例如配置更改。這是可能的,因爲'LoaderManager'的生命與'Activity'解耦,可能會跨越(請糾正我,如果我錯了)。但是,如果我們關閉所有'onDestroy()',這就不再成立。那麼爲什麼不使用簡單的'AsyncTask'呢?如何跟蹤所有創建的'Loader'?那麼關閉「SQLiteOpenHelper」呢?這也很重要 – Raffaele 2012-10-11 00:34:18

+0

@Raffaele:'FragmentActivity'(和API Level 11+的基線「活動」),能夠正確處理配置更改。在這個答案中,當我寫下「被摧毀」時,我的意思是「最後一次被毀壞,而不是由於配置改變」。我對任何混淆抱歉。 – CommonsWare 2012-10-11 09:55:28

+0

什麼是與此*真正的破壞*相關的回調?需要它來關閉裝載機。還需要確保在發生這種情況時沒有'Loader'運行。此外,'LoaderManager' API沒有列出init'ed'Loader',因此必須手工跟蹤它們,或者只是初始化並關閉每個可能的加載器,但這種方法僅適用於* fixed *裝載機,並且不能支持按需裝載* – Raffaele 2012-10-11 10:42:34

相關問題