0

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 片段中的调用。

我怎样才能做到这一点 ?

4

1 回答 1

0

您可能会遭受糟糕的片段设计的困扰。

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

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

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


如果我是你,我会检查的步骤

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

学习链接:

于 2013-04-28T13:28:33.973 回答