使用Sherlock ViewPager和FragmetPagerAdapter

时间:2013-04-28 13:21:28

标签: android actionbarsherlock

我在我的应用程序中使用FragmentPagerAdapter。在适配器中,我有以下代码:

@Override
    public Fragment getItem(final int position) {
        switch(position){
        case 0:
            return OffersBasicInfoFragment.newInstance();
        case 1:
            return OffersSelectedCategoriesFragment.newInstance();
        case 2:
            return OffersManageArtworkFragment.newInstance();
        case 3:
            return OffersLegalDisclaimerFragment.newInstance();
        case 4:
            return OffersSelectStoresFragment.newInstance();
        case 5:
            return OffersPreviewSaveOfferFragment.newInstance();
        default:
            return null;
        }
    }

现在我的onViewCreated函数中有各种网络调用。现在所有这七个页面都被同时调用。如何构建我的代码,以便只有在当前页面处于活动状态时才进行调用。从Tab1滑动到Tab2时的含义应该调用Tab2片段中的调用。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

你可能遭受了糟糕的碎片设计。

奇怪的是,ViewPager应该只预先缓存前2-3个片段(包括当前可见的片段)

使用setOffscreenPageLimit (int limit)可能会让您有可能只创建当前片段,或者同时创建不超过两个片段。

http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)


步骤我已经检查过你是不是

  1. 使用Service和/或ContentProvider来避免缓存和并发问题
  2. 当用户真正看到片段内容
  3. 时,尝试使用Fragment.setUserVisibleHint启动网络呼叫
  4. 如果使用HttpClient,请尝试创建单例并设置maxConnectionsPerHostmaxTotalConnections以允许一次请求
  5. 研究链接: