私の最近のプロジェクトでは、FragmentTabHost の v4 サポート ライブラリを使用しています。
タブとフラグメントが初期化されると、タグにバインドされたフラグメントが作成され、レンダリングされます。そのライフサイクルは
onCreate ==> onCreateView ==> onActivityCreated
API からデータを取得する必要があるため、onActivityCreated メソッドをオーバーライドしました。
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Lg.i("on TagDiscoverListFragment activity created");
new GetDiscoversTask().execute();
}
しかし、このタブに切り替えるたびに、この aysnTask が再度実行されます。切り替えが発生すると、フラグメントが次の呼び出しを行うためです。
onCreateView ==> onActivityCreated
データを再度更新したくありません。
確かに、FragmentTabHost を拡張して doTabChange() メソッドをオーバーライドし、フラグメントのアタッチ/デタッチ操作を非表示/表示に変更できます。
それで、他の解決策はありますか?