一、Activity的生命周期:
onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()、onDestroy();
二、Fragment的生命周期:
onAttach()、onCreate()、onCreateView()、onViewCreated()、onActivityCreated()、onStart()、onResume()、onPause()、onStop()、onDestroyView()、onDestroy()、onDetach()
Activity生命周期的经典图^ ^
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("Simon", "activity -- onCreate");// 当第一次调用一个Activity就会执行onCreate方法
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.fl_container, new MyFragment());
ft.commit();
}
@Override
protected void onStart() {
// 当Activity处于可见状态的时候就会调用onStart方法
Log.i("Simon", "activity -- onStart");
super.onStart();
}
@Override
protected void onResume() {
// 当Activity可以得到用户焦点的时候就会调用onResume方法
Log.i("Simon", "activity -- onResume");
super.onResume();
}
@Override
protected void onPause() {
// 当Activity被遮挡住的时候就会调用onPause方法
Log.i("Simon", "activity -- onPause");
super.onPause();
}
@Override
protected void onRestart() {
// 当Activity又重新可见的时候就会调用onRestart方法
Log.i("Simon", "activity -- onRestart");
super.onRestart();
}
@Override
protected void onStop() {
// 当Activity处于不可见状态的时候就会调用onStop方法
Log.i("Simon", "activity -- onStop");
super.onStop();
}
@Override
protected void onDestroy() {
// 当Activity被销毁时会调用onDestory方法
Log.i("Simon", "activity -- onDestroy");
super.onDestroy();
}
}
Fragment生命周期的经典图^ ^
public class MyFragment extends Fragment {
@Override
public void onAttach(Activity activity) {
// 将fragment关联到activity
Log.i("Simon", "fragment -- onAttach");
super.onAttach(activity);
}
@Override
public void onCreate(Bundle savedInstanceState) {
// 系统创建fragment的时候会调用onCreate
Log.i("Simon", "fragment -- onCreate");
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// 系统创建fragment view的时候会调用onCreateView
Log.i("Simon", "fragment -- onCreateView");
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// 系统创建fragment view结束的时候会调用onViewCreated
Log.i("Simon", "fragment -- onViewCreated");
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// 当Activity中的onCreate方法执行完后调用 所以不能再onCreateView()中进行
// 与activity有交互的UI操作,UI交互操作可以在onActivityCreated()里面进行。
Log.i("Simon", "fragment -- onActivityCreated");
super.onActivityCreated(savedInstanceState);
}
@Override
public void onStart() {
// 当fragment处于可见状态的时候就会调用onStart方法
Log.i("Simon", "fragment -- onStart");
super.onStart();
}
@Override
public void onResume() {
// 当fragment可以得到用户焦点的时候就会调用onResume方法
Log.i("Simon", "fragment -- onResume");
super.onResume();
}
@Override
public void onPause() {
// 当fragment被遮挡住的时候就会调用onPause方法
Log.i("Simon", "fragment -- onPause");
super.onPause();
}
@Override
public void onStop() {
// 当fragment处于不可见状态的时候就会调用onStop方法
Log.i("Simon", "fragment -- onStop");
super.onStop();
}
@Override
public void onDestroyView() {
// 当fragment中的布局被移除时调用
Log.i("Simon", "fragment -- onDestroyView");
super.onDestroyView();
}
@Override
public void onDestroy() {
// 销毁fragment对象
Log.i("Simon", "fragment -- onDestroy");
super.onDestroy();
}
@Override
public void onDetach() {
// Fragment和Activity解除关联
Log.i("Simon", "fragment -- onDetach");
super.onDetach();
}
}
最后看下Activity和Fragment在运行和按HOME键再恢复并退出的生命周期
完整版:
启动:
HOME键:
恢复:
退出: