2012-11-30 73 views
1

每當我ViewPager刷卡,我有以下過程Viewpager和後臺線程

  1. 在instantiateItem的ListView創建一個新的實例。
  2. 將此ListView添加到ViewPager中。
  3. 啓動一個後臺線程加載數據,然後將消息發送給UI線程 所加載的數據集在步驟中創建的列表視圖1.

我的問題是,如果我刷卡非常非常快,我猜測是在第3步中會創建很多不需要運行的線程,那麼,我該如何處理這種情況呢? 如何阻止這些線程運行?

感謝

回答

1

我會建議使用ViewPager.setOffscreenPageLimit(MAX_SIZE)並設置MAX_SIZE,無論你是舒服。頁面超出此範圍後

public void destroyItem(ViewGroup container, int position, Object object) 

將被調用。在這裏,你可以通過調用cancel來處理線程,並執行該頁面所需的任何其他內容。這將限制同時運行的線程數量,無論您滾動多快。

當用戶滾動回其範圍時,instantiateItem項目將再次被調用。