刷过片段时是否始终执行asynctask?

时间:2014-01-08 14:22:29

标签: android android-fragments android-asynctask

基本上我的代码与here 所描述的完全相同:

在每个片段中,我都有不同的asynctask,它只是从网站获取数据。 它看起来像这样:

TextView text;
String content;
View today;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    today = inflater.inflate(R.layout.today, container, false);
    text = (TextView) today.findViewById(R.id.textView);
    // ((TextView) today.findViewById(R.id.textView)).setText("Today");

    new RetriveSiteData().execute("http://menza.lupajz.eu/?den=dnes");

    content = (String) text.getText();

    return today;
}

我想知道数据是否总是被提取,而如果TabPagerAdapter类(在网站上)浏览片段的话 这个方法以同样的方式实现

@Override
public Fragment getItem(int i) {
    switch (i) {
    case 0:
        //Fragement for Android Tab
        return new Android();
    case 1:
       //Fragment for Ios Tab
        return new Ios();
    case 2:
        //Fragment for Windows Tab
        return new Windows();
    }
    return null;
}

如果始终提取数据并且始终执行asynctask,我该如何防止这种情况?也许为每个片段添加一些onResume()方法?

1 个答案:

答案 0 :(得分:0)

基本上你有两个选择:

  1. 在包含视图寻呼机的活动中仅执行一次异步任务,然后将数据传递给您的片段。你也可以通过一些延迟加载来完成它。

  2. 使用ViewPager.setOffscreenPageLimit(int)函数设置要在视图寻呼机中保留的片段数。默认值设置为1,因此每次切换时都会调用getItem()方法。我不建议使用此选项,尤其是当您有复杂和内存消耗的视图时。