在Android开发中,Activity 和Fragment是两种常用的组件,它们都有各自的生命周期方法。理解它们的生命周期对于开发稳定和高效的应用程序至关重要。
1、Activity与Fragment同时运行时生命周期执行顺序探究
2、Android Fragment和Activity的生命周期图对比
3、Android 中Activity和Fragment生命周期的具体变化详解
Activity生命周期
Activity的生命周期包括以下几个主要方法:
- onCreate() : 在Activity创建时调用,用于初始化Activity。
- onStart() : 在Activity即将变为可见时调用。
- onResume() : 在Activity即将开始与用户交互时调用。
- onPause() : 在系统即将开始继续另一个Activity时调用。
- onStop() : 在Activity不再可见时调用。
- onDestroy() : 在Activity即将被销毁时调用。
Fragment生命周期
Fragment的生命周期方法与Activity类似,但也有一些特有的方法:
- onAttach() : 当Fragment与Activity关联时调用。
- onCreate() : 在Fragment被创建时调用。
- onCreateView() : 为Fragment创建视图层次结构时调用。
- onActivityCreated() : 在Activity的onCreate()方法返回后调用。
- onStart() : 在Fragment变为可见时调用。
- onResume() : 在Fragment即将与用户交互时调用。
- onPause() : 在Fragment不再与用户交互时调用。
- onStop() : 在Fragment不再可见时调用。
- onDestroyView() : 在Fragment的视图层次结构被移除时调用。
- onDestroy() : 在Fragment被销毁时调用。
- onDetach() : 在Fragment与Activity解除关联时调用。
生命周期的交互
当Activity和Fragment同时运行时,它们的生命周期方法会按特定顺序执行。例如:
- 在首次打开界面时,Fragment的onStart() 通常先于Activity的onStart() 执行1。
- 当按下Home键返回桌面时,Fragment的onResume() 是最后执行的1。
- 在意外销毁后恢复时,Fragment的onAttach() 和onCreate() 优先执行1。
示例代码
以下是一个简单的示例,展示了如何在Activity中管理Fragment的生命周期:
java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new ExamplFragment()).commit();
}
}
}
public class ExampleFragment extends Fragment {
@Override
public void onAttach(Context context) {
super.onAttach(context);
// Fragment与Activity关联时调用
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Fragment被创建时调用
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// 为Fragment创建视图层次结构
return inflater.inflate(R.layout.fragment_example, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// 在Activity的onCreate()方法返回后调用
}
@Override
public void onStart() {
super.onStart();
// Fragment变为可见时调用
}
@Override
public void onResume() {
super.onResume();
// Fragment即将与用户交互时调用
}
@Override
public void onPause() {
super.onPause();
// Fragment不再与用户交互时调用
}
@Override
public void onStop() {
super.onStop();
// Fragment不再可见时调用
}
@Override
public void onDestroyView() {
super.onDestroyView();
// Fragment的视图层次结构被移除时调用
}
@Override
public void onDestroy() {
super.onDestroy();
// Fragment被销毁时调用
}
@Override
public void onDetach() {
super.onDetach();
// Fragment与Activity解除关联时调用
}
}
理解Activity和Fragment的生命周期有助于开发者更好地管理资源,避免内存泄漏,并确保应用程序在各种情况下都能正常运行1 2。