1

我有一個由FragmentPagerAdapter驅動的活動,它在用戶左右滑動時添加片段。對ViewPager中的片段進行長時間運行的AsyncTask

添加的這個子片段當前是靜態的,並且包含一個ListView項目。我打算使用AysncTask獲得ListView的物品,但是這個過程可能需要10-15秒。

我還是失去了一些東西:

從哪個方法應該我AsyncTask被調用?這是FragmentonCreate方法嗎?當片段處於​​焦點時,我只想調用AsyncTask

然而,最大的問題是,當用戶從屏幕上滑開而AsyncTask正在加載時,我的AysncTask會發生什麼。活動是否被破壞?有沒有辦法阻止活動被破壞?如果我不這樣做,那麼AsyncTask所做的所有進度都將丟失,並且當Fragment開始成爲焦點時,我必須重新調用AsyncTask

謝謝。


原因進展緩慢:

我刮網頁約150記錄和jSoup是真的,真的很慢。不使用服務的問題是數據發生更改的可能性很高,我不想「預先」刪除數據。

@Fildor建議使用Loader來完成繁重工作。快速瀏覽一下Loader的實現表明,它允許您在短時間內持久保存數據,如方向更改。我仍然想知道ViewPagerFragments上的擺動是否會讓數據暫時保持在Loader

+3

你有沒有聽說過裝載機? http://developer.android.com/guide/components/loaders.html我認爲這正是你想使用的...... – Fildor

+1

爲什麼需要這麼長時間?它是否從網絡中檢索數據?在這種情況下,您可能希望使用服務來保持數據最新並從本地數據庫填充視圖。 – Fildor

+0

@Fildor,我用大約150條記錄颳了一頁,jSoup真的很慢。不使用服務的問題是數據發生更改的可能性很高,我不想「預先」刪除數據。 –

回答

2

您是否聽說過Loaders?我認爲,這正是你想要使用什麼......

+0

這不應被標記爲正確的答案。如果你需要更新UI,AsyncTask的支持,裝載機不是一個好選擇。據我所知,沒有什麼好方法來運行更新UI的異步任務,這將與ViewPagers一起工作。 –

+0

「加載程序 在Android 3.0中引入的加載程序可以非常容易地異步加載活動或片段中的數據。」來自:http://developer.android.com/guide/components/loaders.html閱讀評論,然後你會看得更清楚。 – Fildor

0

使用FragmentStatePagerAdapter 可以簡單地從onCreateView開始片段的AsyncTask

+0

你能給我一個小樣本嗎? –