android activity和fragment生命周期
时间: 2025-06-28 21:19:55 浏览: 18
### Android 中 Activity 和 Fragment 生命周期详解
#### Activity 的生命周期
当应用程序中的 `Activity` 被创建、运行以及销毁的过程中,会经历一系列的状态变化。这些状态转换由特定的方法来表示:
- **onCreate()**: 当活动第一次被初始化时调用此方法,在这里可以完成所有的动态环境设置工作[^2]。
- **onStart()**: 此方法在 `Activity` 对用户变得可见之前立即调用。
- **onResume()**: 这个函数会在 `Activity` 开始与用户交互前被执行;此时该组件处于最前端并接收事件输入。
- **onPause()**: 用户离开当前界面但并未完全退出应用时触发,比如按下Home键切换至桌面或其他应用时就会发生这种情况。在此期间可能会保存一些临时数据以便恢复操作[^3]。
- **onStop()**: 如果不再显示给用户的任何部分,则会进入停止状态。这通常发生在另一个全屏模式下的新窗口覆盖了整个屏幕之后。
- **onDestroy()**: 组件即将结束其生命期的时候会被通知到,这是释放资源的好时机。
- **onRestart()**: 只有当 `Activity` 已经暂停过(即已经执行过了 onStop),并且再次变为前台可视化的状态下才会调用它。
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onStart(){
super.onStart();
}
@Override
protected void onResume(){
super.onResume();
}
@Override
protected void onPause(){
super.onPause();
}
@Override
protected void onStop(){
super.onStop();
}
@Override
protected void onDestroy(){
super.onDestroy();
}
```
#### Fragment 的生命周期
`Fragment` 是一种可以在活动中使用的模块化片段,拥有自己独立的一套生命周期回调接口。由于依赖于宿主 `Activity` 存活,所以两者间存在紧密联系,下面列举了一些重要的阶段:
- **onAttach()**: 表明 fragment 实例关联到了 activity 上下文中。
- **onCreate()**: 创建 fragment 时候调用,用于一次性初始化逻辑处理。
- **onCreateView()**: 需要构建视图结构的地方,返回根布局对象作为 UI 层面的内容载体。
- **onActivityCreated()**: 宿主 activity 执行完它的 `onCreate()` 方法后紧接着调用此函数,意味着现在可以安全地访问父容器内的控件实例[^4]。
- **onStart(), onResume(), onPause(), onStop()**: 类似于对应的 `Activity` 生命周期方法,反映了 fragment 是否正在屏幕上展示及其活跃程度的变化情况。
- **onDetach()**: 解除 fragment 同 activity 关联关系之前的最后一个机会做清理动作。
```java
public class ExampleFragment extends Fragment {
@Override
public void onAttach(Context context){
super.onAttach(context);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState){
return inflater.inflate(R.layout.fragment_example,container,false);
}
@Override
public void onViewCreated(View view,Bundle savedInstanceState){
super.onViewCreated(view,savedInstanceState);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
}
// Other lifecycle methods...
}
```
通过上述描述可以看出,虽然二者有着不同的职责范围,但是它们之间的相互影响十分明显——特别是对于那些嵌入式的 fragments 来说更是如此。每当宿主发生变化都会相应地引起内部 components 状态调整,从而确保整体行为一致性和用户体验流畅度。
阅读全文
相关推荐


















