Android復習-fragment宣言サイクルとActivityライフサイクル(個人メモ)
4945 ワード
Fragmentライフサイクル(メモ):
onAttach
onCreate
onCreateView:
onViewCreated
onStart
onReume:
onPause:
onStop
onDestoryView
onDestory
onDetch
fragmentのライフサイクルはActivityにバインドされていますが、統一的には言えません.例えば、fragmentManagerでActivityのfragmentに動的に追加されます.宣言サイクルは、作成されたライフサイクルについてはactivityが先に実行し、fragmentが後に実行し、破棄と一時停止のライフサイクルについてはfragmentが先に実行し、activityが後に実行します.ただし、activityがxmlファイルで宣言したfragmentラベルであれば、作成したfragmentについては先に実行し、activity後に実行し、表示(onResume)についてはactivity先に実行し、fragment後に実行し、破棄を一時停止した場合はfragment先に実行し、activity後に実行する.
fragmentには、怠け者のロードに必要な重要な方法があります.
setuUserVisiableHint(boolean isVisiableToUser):このメソッドはfragmentManagerでfragmentを追加する場合、fragmentがユーザーに表示されるときにコールバックする必要があるメソッドで、このメソッドはコールバックされ、
isVisiableToUserはtrueで、表示されない場合はfalseにコールバックします.
tablayout+viewpager+fragmentで怠惰なロードを実現する場合:setuserVisiableHint+onView Created+onDestoryView+isInitialData変数によりloadDataを決定する.
onAttach
onCreate
onCreateView:
onViewCreated
onStart
onReume:
onPause:
onStop
onDestoryView
onDestory
onDetch
fragmentのライフサイクルはActivityにバインドされていますが、統一的には言えません.例えば、fragmentManagerでActivityのfragmentに動的に追加されます.宣言サイクルは、作成されたライフサイクルについてはactivityが先に実行し、fragmentが後に実行し、破棄と一時停止のライフサイクルについてはfragmentが先に実行し、activityが後に実行します.ただし、activityがxmlファイルで宣言したfragmentラベルであれば、作成したfragmentについては先に実行し、activity後に実行し、表示(onResume)についてはactivity先に実行し、fragment後に実行し、破棄を一時停止した場合はfragment先に実行し、activity後に実行する.
fragmentには、怠け者のロードに必要な重要な方法があります.
setuUserVisiableHint(boolean isVisiableToUser):このメソッドはfragmentManagerでfragmentを追加する場合、fragmentがユーザーに表示されるときにコールバックする必要があるメソッドで、このメソッドはコールバックされ、
isVisiableToUserはtrueで、表示されない場合はfalseにコールバックします.
tablayout+viewpager+fragmentで怠惰なロードを実現する場合:setuserVisiableHint+onView Created+onDestoryView+isInitialData変数によりloadDataを決定する.
public class TestFragment extends Fragment {
public static final String PAGE_INDEX = "page_index";
private int page = -1;
private TextView textView;
private boolean isVisibleToUser;
private boolean isViewCreated;
private boolean isInitialData;
private int params = -2;
public static TestFragment newInstance(int position) {
Bundle args = new Bundle();
args.putInt(PAGE_INDEX,position);
TestFragment fragment = new TestFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
this.isVisibleToUser = isVisibleToUser;
loadData();
Log.i("mydata",page + "----setUserVisibleHint :" + isVisibleToUser);
}
private void loadData() {
// Log.i("mydata",page + " : loadadata-->" + "--isVisibleToUser--" + isVisibleToUser + "--isViewCreated--" + isViewCreated + "--isInitialData--" + isInitialData);
if(isVisibleToUser && isViewCreated && !isInitialData){
Log.i("mydata",page + " ");
isInitialData = true;
params = new Random().nextInt(10);
textView.setText(textView.getText() + " : " + params);
}
}
@Override
public void onAttach(Context context) {
page = getArguments().getInt(PAGE_INDEX);
Log.i("mydata",page + "----onAttach");
super.onAttach(context);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("mydata",page + "----onCreate");
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Log.i("mydata",page + "----onCreateView");
return inflater.inflate(R.layout.fragment_layout,null);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Log.i("mydata",page + "----onViewCreated");
this.isViewCreated = true;
textView = (TextView) view.findViewById(R.id.tv_fragment);
textView.setText("index :" + page);
loadData();
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.i("mydata",page + "----onActivityCreated");
}
@Override
public void onStart() {
super.onStart();
Log.i("mydata",page + "----onStart");
}
@Override
public void onResume() {
super.onResume();
Log.i("mydata",page + "----onResume");
}
@Override
public void onPause() {
super.onPause();
Log.i("mydata",page + "----onPause");
}
@Override
public void onStop() {
super.onStop();
Log.i("mydata",page + "----onStop");
}
@Override
public void onDestroyView() {
super.onDestroyView();
// , onDestroyView , fragment onViewCreated , isViewCreated = true 。。
isViewCreated = false;
Log.i("mydata",page + "----onDestroyView");
}
@Override
public void onDestroy() {
super.onDestroy();
// fragment list , onDestroy ,fragment , isInitialData true,
isInitialData = false;
Log.i("mydata",page + "----onDestroy");
}
@Override
public void onDetach() {
super.onDetach();
Log.i("mydata",page + "----onDetach");
}
}