Activity和Fragment生命周期

一、Activity生命周期

Activity 类提供7个核心回调集: onCreate(), onStart(), onRestart(),onResume(), onPause(), onStop()和 onDestroy()。
Activity生命周期
https://developer.android.google.cn/guide/components/activities/activity-lifecycle?hl=zh-cn

二、Fragment生命周期

在这里插入图片描述

三、常见面试题

1、打开一个页面,退到后台,然后再次打开应用,activity分别经历了怎样的生命周期?

打开一个页面,回调A页面 onCreate()->onStart()->onResume();
“退到后台”调用 onPause()->onStop();
再次打开页面调用onRestart()->onStart()->onResume();

2、打开页面A,再启动页面B,从B页面返回A,A、B页面分别经历了怎样的生命周期?

  1. 打开页面A
    A:onCreate()->onStart()->onResume();
  2. 启动页面B
    A:onPause()
    B:onCreate()->onStart()->onResume();
    A:onStop()
  3. 从B页面返回A
    B:onPause()
    A:onRestart()->onStart()->onResume()
    B:onStop()->onDestroy()

2、Activity生命周期有哪些?

onCreate()->onStart()->onResume()->onPause()->onStop()->onDestroy()

3、Activity意外退出会触发哪两个方法?

onSaveInstanceState();
onRestoreInstanceState();

4、Fragment生命周期有哪些?

onAttach()->onCreate()->onCreateView()->onViewCreated()->onActivityCreated() (最新版本已废弃)->onStart()->onResume()->onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()

### Android Activity Fragment 生命周期详解及区别 #### 一、生命周期概述 ActivityFragment都拥有各自的生命周期,这些生命周期由一系列回调函数组成。当应用程序状态发生变化时,系统会调用相应的回调函数来通知组件当前所处的状态。 #### 二、Activity生命周期 Activity的典型生命周期包括以下几个阶段: - **onCreate()**: 创建活动实例并初始化界面资源[^1]。 - **onStart()**: 活动变得可见给用户[^1]。 - **onResume()**: 用户可以交互操作该活动。 - **onPause()**: 当另一个透明或对话框式的活动启动时被调用。 - **onStop()**: 完全不可见于屏幕时触发此事件。 - **onDestroy()**: 销毁前最后一次机会清理工作。 ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override protected void onStart(){ super.onStart(); } @Override protected void onResume(){ super.onResume(); } ``` #### 三、Fragment生命周期 Fragment不仅继承了大部分来自其宿主Activity的方法,还额外增加了几个特有的方法用于管理自身的创建过程以及视图加载逻辑: - **onAttach(Context context)**: 表明fragment已经关联到了host activity上[^2]。 - **onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)**: 返回一个代表UI布局结构的view对象。 - **onActivityCreated(Bundle savedInstanceState)**: 此时activity已完成它的`onCreate()`方法执行。 - **onViewStateRestored(Bundle savedInstanceState)**: View层次结构已完全恢复完毕。 - **onDestroyView()**: 清除与UI有关的内容。 - **onDetach()**: 解绑fragment同host之间的联系。 ```java public class ExampleFragment extends Fragment { @Override public void onAttach(@NonNull Context context){ super.onAttach(context); } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container, @Nullable Bundle savedInstanceState){ return null; } @Override public void onDestroyView(){ super.onDestroyView(); } } ``` #### 四、两者之间主要的不同之处在于: - Fragment具有更细粒度的状态转换机制,比如它可以独立地显示/隐藏而不需要重建整个页面[^3]。 - Fragment依赖于它所属的Activity来进行一些核心功能的操作,因此某些情况下可能会受到后者的影响[^4]。 - 对比之下,Fragment多了像`onAttach()`, `onDetach()`, `onCreateView()`, `onDestroyView()`这样的特定周期节点。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值