viewpager中的Android异步任务

viewpager中的Android异步任务,android,android-fragments,android-asynctask,android-viewpager,Android,Android Fragments,Android Asynctask,Android Viewpager,我正在使用FragmentStatePagerAdapter设置ViewPager内容。在适配器的getItem()方法中,我调用了一个片段。我想在每个视图页面片段上动态显示来自服务器的产品图像和名称。我在片段的OnCreateView()中调用异步任务。但也会调用相邻产品的异步任务。我想知道哪种方法最好 我应该提前执行异步任务并设置视图寻呼机的适配器吗?如果是这样的话,我有1000多种产品,设置适配器需要花费大量时间 或者我应该在每个页面加载后执行异步任务?但在这里,每次我来到页面,它都会不断

我正在使用FragmentStatePagerAdapter设置ViewPager内容。在适配器的getItem()方法中,我调用了一个片段。我想在每个视图页面片段上动态显示来自服务器的产品图像和名称。我在片段的OnCreateView()中调用异步任务。但也会调用相邻产品的异步任务。我想知道哪种方法最好

我应该提前执行异步任务并设置视图寻呼机的适配器吗?如果是这样的话,我有1000多种产品,设置适配器需要花费大量时间

或者我应该在每个页面加载后执行异步任务?但在这里,每次我来到页面,它都会不断地从服务器加载数据。我希望数据只在我第一次访问页面时加载,在下一次滑动时,它应该简单地显示,而不是再次从服务器获取

我也希望这是一个无限查看寻呼机适配器,这是怎么可能的

非常感谢:)

。。。我希望数据只在我第一次访问页面时加载,在下一次滑动时,它应该简单地显示,而不是再次从服务器获取

AsyncTask
调用从
OnCreateView
移动到:将在用户可见片段时执行:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);

    if (isVisibleToUser) {

        // launch your AsyncTask here, if the task has not been executed yet
        if(aTask.getStatus().equals(AsyncTask.Status.PENDING)) {
            aTask.execute();
        }
    }
}
。。。我也希望这是一个无限查看寻呼机适配器,这是怎么可能的

这已经得到了回答,即:


  • -如果我在setUserVisibleHint()中调用异步任务,异步任务不是每次转到每个页面时都会被调用吗?用户不会一直在所有页面上看到加载消息吗?是的。这是您必须检查它是否挂起(尚未执行)的方法。您说过您希望它只在用户第一次进入页面时执行。每当每个页面都可见时,就会调用这段代码。它不是第一次单独执行aysnc任务。每当页面变为可见时,它都会在每个页面上执行。如果(aTask.getStatus().equals(AsyncTask.Status.PENDING)){aTask.execute();}正好。我从您的Q中理解了这一点。但是,如果您希望对viewpager中的所有片段执行一次
    AsyncTask
    ,则应该在容器活动的
    onCreate
    中执行它,然后将数据传递给片段。但是,如果你不发布一些代码来展示你已经做了什么,那就是猜测。谢谢。拯救了我的问题。