当前位置: 首页 > news >正文

珠海手机网站漯河seo推广

珠海手机网站,漯河seo推广,wordpress 增删改查,网站建设广告图三三要成为安卓糕手 之前已经学习了Activity的生命周期,今天来学习Fragment的生命周期,先附上官方提供的生命周期图,和自己总结的表格生命周期方法对应阶段(结合图片)功能注释onAttach-当 Fragment 与 Activity 关联时…

在这里插入图片描述

三三要成为安卓糕手

之前已经学习了Activity的生命周期,今天来学习Fragment的生命周期,先附上官方提供的生命周期图,和自己总结的表格

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

生命周期方法对应阶段(结合图片)功能注释
onAttach-当 Fragment 与 Activity 关联时会被调用,此时可获取 Activity 的引用。附着,连接
onCreate
CREATED阶段
当 Fragment 被创建时调用,用于初始化不依赖于视图的组件,不初始化 UI 元素。创建Fragment
onCreateView用于创建 Fragment 的视图。创建Fragment视图
onViewCreated当视图创建完成后调用,可在此初始化 UI 组件或绑定数据,此时视图已完全创建,可访问 UI 元素。创建Fragment视图中的UI控件
onViewStateRestoredonCreateView() 之后、onStart() 之前调用,用于恢复先前保存的 Fragment 状态,与onSaveInstanceState 配对使用。
onActivityCreated-当宿主 Activity 的 onCreate() 方法返回后调用,可在此与 Activity 交互或依赖于 Activity 的内容,从 API 28 开始已废弃,建议使用 onViewCreated
onStartSTARTED阶段当 Fragment 变为可见时调用,此时视图即将显示在屏幕上。
onResumeRESUMED阶段当 Fragment 可与用户交互时调用,Fragment 处于活动状态,适合在此恢复暂停的操作或更新 UI。
onPauseSTARTED阶段当 Fragment 失去用户焦点但仍然可见时调用,可在此保存用户数据或暂停耗时操作。
onStopCREATED阶段当 Fragment 完全不可见时调用,适合在此保存状态或释放不再需要的资源。
onSaveInstanceStateCREATED阶段在 Fragment 即将被销毁(如用户旋转屏幕或 Fragment 被放入后台)之前调用,作用是保存 Fragment 的瞬时状态到 Bundle 中,以便在恢复时使用。
onDestroyViewDESTROYED阶段
当与 Fragment 视图关联的资源被释放时调用,此时视图即将销毁,适合在此清理 UI 相关的资源。
onDestroy当 Fragment 不再需要时调用,通常用于清理全局资源,onDestroy 触发时,Fragment 的视图生命周期结束。
onDetach-当 Fragment 与 Activity 解除关联时调用,Fragment 的生命周期结束。

一:总体代码

Activity代码参考上一章,这是UI界面

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

public class MyFragment extends Fragment {private static final String TAG = "MyFragment";@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = inflater.inflate(R.layout.layout_red, container, false);TextView tvText = view.findViewById(R.id.tv_text);tvText.setText("我是MyFragment里面的标签");tvText.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(getActivity(),"弹个窗",Toast.LENGTH_SHORT).show();}});Log.i(TAG, TAG +" onCreateView: 在这里关联视图");return view;}@Overridepublic void onAttach(@NonNull Context context) {super.onAttach(context);//当Fragment与Activity关联时会被调用。此时可以获取Activity的引用//此时就可以直接获取getActivityFragmentActivity activity = (FragmentActivity) getActivity();Log.i(TAG, TAG + " onAttach: Fragment与Activity关联");}@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//当Fragment被创建时调用,用于初始化不依赖于视图的组件,例如获取资源或设置数据。// 所以不要在这里初始化UI元素。Log.i(TAG, TAG + " onCreate: Fragment被创建");}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);//当视图创建完成后调用,可在此初始化UI组件或绑定数据。此时视图已经完全创建,可以访问UI元素。Log.i(TAG, TAG + " onViewCreated: 视图已经完全创建,可以访问UI元素");}@Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);//当宿主Activity的onCreate()方法返回后调用,可在此与Activity交互或依赖于Activity的内容。//从API 28开始已废弃,建议使用onViewCreated()就可以了。Log.i(TAG, TAG + " onActivityCreated: 一个已废弃的方法");}@Overridepublic void onStart() {super.onStart();//当Fragment变为可见时调用,此时视图即将显示在屏幕上Log.i(TAG, TAG + " onStart: 此时视图即将显示在屏幕上");}@Overridepublic void onResume() {super.onResume();//当Fragment可与用户交互时调用,Fragment处于活动状态。适合在此恢复暂停的操作或更新UI。Log.i(TAG, TAG + " onResume: Fragment可与用户交互时调用");}@Overridepublic void onPause() {super.onPause();//当Fragment失去用户焦点但仍然可见时调用,可以在此保存用户数据或暂停耗时操作。Log.i(TAG, TAG + " onPause: Fragment失去用户焦点但仍然可见");}@Overridepublic void onStop() {super.onStop();//当Fragment完全不可见时调用。适合在此保存状态或释放不再需要的资源。Log.i(TAG, TAG + " onStop: Fragment完全不可见时调用");}@Overridepublic void onViewStateRestored(@Nullable Bundle savedInstanceState) {super.onViewStateRestored(savedInstanceState);// 在onCreateView()之后、onStart()之前调用。// 它用于恢复先前保存的Fragment状态,与onSaveInstanceState()配对使用。Log.i(TAG, TAG + " onViewStateRestored: 恢复先前保存的Fragment状态");}@Overridepublic void onSaveInstanceState(@NonNull Bundle outState) {super.onSaveInstanceState(outState);//在Fragment即将被销毁(例如,用户旋转屏幕或Fragment被放入后台)之前调用(通常在onPause()或onStop()之前调用)。// 它的作用是保存Fragment的瞬时状态(如UI状态或一些临时数据)到Bundle中,以便在恢复时使用。Log.i(TAG, TAG + " onSaveInstanceState: 在这里可以保存数据");}@Overridepublic void onDestroyView() {super.onDestroyView();//当与Fragment视图关联的资源被释放时调用。此时视图即将销毁,适合在此清理UI相关的资源。Log.i(TAG, TAG + " onDestroyView: 视图即将销毁");}@Overridepublic void onDestroy() {super.onDestroy();//当Fragment不再需要时调用,通常用于清理全局资源。适合在此释放持久数据,比如成员变量、某些图片资源或对象资源等等。//onDestroy触发时,Fragment 的视图生命周期结束Log.i(TAG, TAG + " onDestroy: 已销毁,Fragment的视图生命周期结束");}@Overridepublic void onDetach() {super.onDetach();//当Fragment与Activity解除关联时调用。Fragment的生命周期结束Log.i(TAG, TAG + " onDetach: Fragment与Activity解除关联时调用");}
}

二:添加Fragment生命周期变化

点击添加按钮,看看生命周期变化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1:view操作在哪个生命周期中进行

官方是推荐在onViewCreated(视图创建完毕,初始化UI控件)中进行一些view操作的,比如说

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是在商业场景开发当中,多数情况是在onCreateView创建Fragment视图中,就可以进行一些view操作

提问:为什么此时视图还没有被完全的创建出来,我们就可以去查找到控件呢?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

虽然当前我们的view视图还没有返回到我们的Fragment底层,但是我们的view已经创建出来了,并不是一个空的对象,只不过还没有附加到当前的屏幕上而已

2:废弃的onActivityCreated方法

其实onActivityCreated就是一个**回调通知方法**,宿主的onCreate() 完成后,告诉Fragment,Fragment就可以在这个方法中与宿主进行交互或者访问宿主的相关内容信息

从 Android API 28 开始,onActivityCreated 已被废弃,官方建议使用onViewCreated 替代,它更专注于 Fragment 视图相关的初始化、交互逻辑等操作

3:视图状态恢复onViewStateRestored

回顾一下:

我们在Activity的生命周期中恢复状态用的是onRestoreInstanceState方法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在Fragment中使用的是onViewStateRestored

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@Overridepublic void onViewStateRestored(@Nullable Bundle savedInstanceState) {super.onViewStateRestored(savedInstanceState);// 在onCreateView()之后、onStart()之前调用。// 它用于恢复先前保存的Fragment状态,与onSaveInstanceState()配对使用。Log.i(TAG, TAG + " onViewStateRestored: 恢复先前保存的Fragment状态");}

方法执行顺序在onViewCreated之后、 onStart之前 ;它会去判断当前Bundle中有没有数据,没有数据说明是第一次创建

4:显示视图和重新开始(可交互)

    @Overridepublic void onStart() {super.onStart();//当Fragment变为可见时调用,此时视图即将显示在屏幕上Log.i(TAG, TAG + " onStart: 此时视图即将显示在屏幕上");}@Overridepublic void onResume() {super.onResume();//当Fragment可与用户交互时调用,Fragment处于活动状态。适合在此恢复暂停的操作或更新UI。Log.i(TAG, TAG + " onResume: Fragment可与用户交互时调用");}

三:上划切换到桌面再返回场景

1:上划到桌面场景

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    @Overridepublic void onPause() {super.onPause();//当Fragment失去用户焦点但仍然可见时调用,可以在此保存用户数据或暂停耗时操作。Log.i(TAG, TAG + " onPause: Fragment失去用户焦点但仍然可见");}@Overridepublic void onStop() {super.onStop();//当Fragment完全不可见时调用。适合在此保存状态或释放不再需要的资源。Log.i(TAG, TAG + " onStop: Fragment完全不可见时调用");}
@Overridepublic void onSaveInstanceState(@NonNull Bundle outState) {super.onSaveInstanceState(outState);//在Fragment即将被销毁(例如,用户旋转屏幕或Fragment被放入后台)之前调用(通常在onPause()或onStop()之前调用)。// 它的作用是保存Fragment的瞬时状态(如UI状态或一些临时数据)到Bundle中,以便在恢复时使用。Log.i(TAG, TAG + " onSaveInstanceState: 在这里可以保存数据");}

上划操作

可以往outState中存储一些数据

2:从后台点击回来场景

再从后台点回来

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四:移除Fragment场景

销毁相关的有三个方法

点击移除按钮

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

比Activity多了一个生命周期,多一个Detach

onDetach,跟Activity的destory不同,Fragment的destory是当前视图生命周期结束了,也就是UI结束了

http://www.dtcms.com/a/587918.html

相关文章:

  • 天津公司建站怎么做万网网站
  • 网站后台目录如何保护四川省建设注册资格中心网站
  • asp.net做网站教程wordpress 仪表盘 慢
  • 门户网站模板图片做网站备案须知
  • 网站开发是什么意思自建站平台
  • 免费注册域名的网站百度标注平台怎么加入
  • 网站上传文件代码如何做登录网站
  • 在家可以加工的小工厂企业网站排名提升软件智能优化
  • 有关网站设计的文章h5制作开发新报价图片
  • 招商网站建设推广外贸网站google推广
  • 如何做网站自适应源码论坛网搭建
  • 企业网站开发需求分析网络广告策划与创意
  • 宣城市建设银行网站首页中国万网域名注册
  • 广州网站备案方案wordpress如何换图片不显示
  • 天津网站制作套餐微商已经被国家定为传销了
  • 网站ip屏蔽wordpress开放多站点
  • 网站站长seo推广网站建设课程 谷建
  • dedecms 倒计时 天数 网站首页潍坊专业网络营销
  • 视频制作网站怎么做seo外包公司报价
  • 网站诚信体制建设手机网站开发框架php
  • 商品展示网站源码滁州森沃纸质包装有限公司
  • 商务网站的分类咖啡网站开发
  • 怎么创建网站平台入侵网站怎么做弹出
  • 驻马店市住房和城乡建设局网站首页循化网站建设公司
  • 工商工事上哪个网站做vue做网站前台
  • 做 58 那样的网站胡芦娃app软件下载网站
  • 怎样提高网站流量wordpress多重筛选
  • 学交互设计网站flash 网站 源码
  • 7免费网站建站网站的设计需要什么
  • 做淘客网站 名字招商加盟网站建设目的