activity跳转fragment 各自的生命周期
时间: 2025-01-08 21:57:54 浏览: 6
### Android Activity 跳转 Fragment 生命周期详解
#### Activity 和 Fragment 的生命周期交互
当从 `Activity` 切换至 `Fragment` 时,两者之间的生命周期会紧密协作并相互影响。具体来说:
- **启动过程**
在首次进入 `MainActivity` 并加载第一个 `Fragment` 时,`Activity` 首先经历其自身的初始化阶段,即依次触发 `onCreate()` -> `onStart()` -> `onResume()` 方法[^1]。
紧接着,对于新加入的 `Fragment` 实例而言,则按照顺序执行以下一系列方法来完成自己的创建流程:`onAttach()` -> `onCreate()` -> `onCreateView()` -> `onViewStateRestored()` -> `onActivityCreated()` -> `onStart()` -> `onResume()`[^2]。
此时整个界面处于前台可见状态,并且用户可以与之互动。
```java
// MainActivity.java 示例代码片段
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null){
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, new MyFragment())
.commit();
}
}
```
- **离开当前页面**
一旦发生由某个事件(比如点击按钮)引发向另一个 `Activity` 或者不同 `Fragment` 进行导航的动作,原 `Activity` 将开始走销毁路径的一部分操作——暂停(`onPause`)、停止(`onStop`)直至可能最终被回收(`onDestroy`)[^4];与此同时,任何已附加给该 `Activity` 下面的 `Fragment(s)` 同样也会相应地收到通知去处理各自的状态保存工作并通过调用诸如 `onSaveInstanceState()` 来准备即将发生的变动[^3]。
如果只是简单替换现有容器内的 `Fragment` ,则旧有的那个会被置入背景不可见模式 (`onPause`, `onStop`) 或完全摧毁 (`onDestroyView`, `onDestroy`),而新的将会重复之前提到过的构建步骤直到显示出来为止。
```java
// 替换Fragment示例代码
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container, anotherFragment)
.addToBackStack(null)//可选参数用于管理返回堆栈
.commit();
```
- **返回前一页面**
按下 Back 键回到之前的 `Activity` 或 `Fragment` 上下文中,先前被隐藏起来的对象将重新激活它们的生命历程—恢复(`onRestart`)、重启(`onStart`)以及继续运行(`onResume`), 对于那些曾经短暂消失不见但仍保留着实例数据结构体的组件来讲更是如此。
而对于刚被移除掉的那个部分,则依据具体情况决定是否要彻底释放资源或是仅仅调整为后台等待状态以便将来快速重现。
---
阅读全文