基本上我的代码与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()方法?
答案 0 :(得分:0)
基本上你有两个选择:
在包含视图寻呼机的活动中仅执行一次异步任务,然后将数据传递给您的片段。你也可以通过一些延迟加载来完成它。
使用ViewPager.setOffscreenPageLimit(int)函数设置要在视图寻呼机中保留的片段数。默认值设置为1,因此每次切换时都会调用getItem()方法。我不建议使用此选项,尤其是当您有复杂和内存消耗的视图时。