在我最近的项目中,我使用 FragmentTabHost 的 v4 支持库。
当 tab 和 fragment 初始化时,绑定到标签的 Fragment 被创建并渲染。它的生命周期是
onCreate ==> onCreateView ==> onActivityCreated
我覆盖了 onActivityCreated 方法,因为我需要从 api 获取一些数据。
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Lg.i("on TagDiscoverListFragment activity created");
new GetDiscoversTask().execute();
}
但是每次我切换到这个选项卡时,这个 aysnTask 都会再次执行,因为当切换发生时,片段调用:
onCreateView ==> onActivityCreated
我不希望数据再次刷新。
当然,我可以扩展 FragmentTabHost 并覆盖方法 doTabChange() 并将片段的附加/分离操作更改为隐藏/查看。
那么,还有其他解决方案吗?