2014-07-15 55 views
0

我正在經歷一個非常奇怪的行爲,我想我錯過了一些東西。碎片內部帶有碎片的光標加載器

我有一個活動,其中有一個片段。這個片段有一個ViewPager,它顯然承載了其他片段。

要填充該ViewPager,我需要來自四個表的信息。一旦第一個加載器完成加載(我們稱之爲0),我就啓動其他加載器。

用戶在頁面上滑動,當他/她到達最後一頁時,最後一頁上加載的片段再次在加載器0中加載,這需要大量時間才能到達onLoaderFinished。如果我加載了「最後一頁片段」而不進入ViewPager,它會立即加載,如預期的那樣。

有沒有辦法處理ViewPager中的片段的這種情況,使用與用於填充ViewPager本身的相同Loader?

在此先感謝。

+0

可能有點代碼,請:)然後,嘗試在所有加載器中添加更多日誌記錄,以便您瞭解什麼時候啓動以及何時完成,以及它們是否啓動太多次。 – vandus

回答

0

嘗試在onCreate()中調用setOffscreenPageLimit()(初始化ViewPager之後)。 OffscreenPageLimit設置應保留到當前頁面任一側的頁面數量。有了這個你所有的片段都會實例化。儘管如果頁面數量很多,你一定不要這樣做。

+0

默認情況下,屏幕外限制設置爲1,這就是我正在使用的值。有了我所擁有的那些片段,如果我使用的不僅僅是這些,我可以輕鬆獲得OOM。 –

0

我解決了這個問題,不通過調用Fragment中的Loader並將我想從數據庫中獲得的數據作爲Serializable傳遞給Bundle。