我有一個由FragmentPagerAdapter
驅動的活動,它在用戶左右滑動時添加片段。對ViewPager中的片段進行長時間運行的AsyncTask
添加的這個子片段當前是靜態的,並且包含一個ListView
項目。我打算使用AysncTask
獲得ListView
的物品,但是這個過程可能需要10-15秒。
我還是失去了一些東西:
從哪個方法應該我AsyncTask
被調用?這是Fragment
的onCreate
方法嗎?當片段處於焦點時,我只想調用AsyncTask
。
然而,最大的問題是,當用戶從屏幕上滑開而AsyncTask
正在加載時,我的AysncTask
會發生什麼。活動是否被破壞?有沒有辦法阻止活動被破壞?如果我不這樣做,那麼AsyncTask
所做的所有進度都將丟失,並且當Fragment
開始成爲焦點時,我必須重新調用AsyncTask
。
謝謝。
原因進展緩慢:
我刮網頁約150記錄和jSoup是真的,真的很慢。不使用服務的問題是數據發生更改的可能性很高,我不想「預先」刪除數據。
@Fildor建議使用Loader
來完成繁重工作。快速瀏覽一下Loader
的實現表明,它允許您在短時間內持久保存數據,如方向更改。我仍然想知道ViewPager
在Fragments
上的擺動是否會讓數據暫時保持在Loader
。
你有沒有聽說過裝載機? http://developer.android.com/guide/components/loaders.html我認爲這正是你想使用的...... – Fildor
爲什麼需要這麼長時間?它是否從網絡中檢索數據?在這種情況下,您可能希望使用服務來保持數據最新並從本地數據庫填充視圖。 – Fildor
@Fildor,我用大約150條記錄颳了一頁,jSoup真的很慢。不使用服務的問題是數據發生更改的可能性很高,我不想「預先」刪除數據。 –