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

天津站设计单位有网址 有空间怎么做网站

天津站设计单位,有网址 有空间怎么做网站,html5网站开发方案,东营做网站优化价格Android开发笔记#xff1a;理解Fragment 导言 本篇文章产生的原因很简单#xff0c;就是我在了解Android Jetpack中的Lifecycle框架时发现Lifecycle具体时间和状态的更新都是由一个名为ReportFragment的Fragment来跟踪的#xff0c;为了更好的了解Fragment是如何追踪Activ…Android开发笔记理解Fragment 导言 本篇文章产生的原因很简单就是我在了解Android Jetpack中的Lifecycle框架时发现Lifecycle具体时间和状态的更新都是由一个名为ReportFragment的Fragment来跟踪的为了更好的了解Fragment是如何追踪Activity生命周期状态的变化我们有必要对Fragment组件进行更深入的探讨。 Fragment管理器 首先我们要探讨的就是Fragment管理器(FragmentManager)我们在进行动态地加载和移除Fragment的操作时都需要借助这个Fragment管理器来开启事务提交请求。Fragment的管理与ViewGroup与View的关系类似一个Fragment既是上一个父Fragment的子Fragment又是下一个子Fragment的父Fragment。而每一个父Fragment都有一个FragmentManager来管理其子Fragment。 我们以Google官网上的一张图为例子 其中绿色的部分代表的是顶级Activity的布局界面蓝色部分就是Activity中的Fragment容器了白色的部分是示例中的最底层的Fragment。在Example 1中Fragment容器中装有两个子Fragment而每一个父Fragment都有一个FragmentManager所以例子一种的包含关系和管理关系如下所示 对于中间第二级的Fragment我们即可以通过getParentFragmentManager来获取管理其自身的FragmentManager还可以通过getChildFragmentManager来获取其管理的Manager。 Fragment事务 所谓的事务我会把它理解为是一组关于Fragment的操作我们可以通过beginTransaction方法来开启一个事务通过这个事务我们可以实现Fragment的添加移除替换等操作。当一切操作都添加完毕后我们可以通过commit方法将当前事务给提交。不过被提交的事务并不会被马上执行相反的它会等待主线程一旦它可以被执行了才会被执行。当然了我们也可以通过commitNow方法来马上触发事务不过需要说明的是commitNow是和addToBackStack不兼容的也就是说一旦你调用了commitNow方法就不能再使用返回栈了。还有一种方法就是调用executePendingTransactions方法这个方法会执行所有被挂起的事务。 触发事务可能会引起Fragment的生命周期的变化具体来说当一个Fragment实例被执行add操作后它会进入到STARED状态之中去。 通过事务我们还可以限制Fragment的生命周期调用setMaxLifecycle方法可以为Fragment设置最大的生命周期所谓的大和小就是靠近运行状态(Resume)的距离距离运行状态越近生命周期越大。 Fragment的生命周期 接下来我们要谈到的是Fragment的生命周期每一个Fragment都有其生命周期。Fragment实现了LifecycleOwner接口说明Fragment也可以使用Lifecycle进行检测。实际上Activity的LifecycleOwner状态的变化也是通过一个特殊的Fragment来进行跟踪的。除了使用Lifecycler之外Fragment与Activity一样本身就带有关于生命周期的回调方法。 还需要说明的是Fragment的视图也单独有一个Lifecycle它独立于Fragment的Lifecycle的Fragment会为其视图维护一个LifecycleOwner我们可以通过 getViewLifecycleOwner() 或 getViewLifecycleOwnerLiveData()进行访问。 生命周期之下的Fragment和Fragment管理器 具体来说Fragment的生命周期是由其FragmentManager所管理的在实例化Fragment之后它会从INITIALIZED状态开始并且将其添加进入FragmentManager之中FragmentManager负责确定ragment应该是处于哪个状态的。而且FragmentManager还会负责Fragment与其宿主Activity的附加和分离。将 Fragment 添加到 FragmentManager 并附加到其宿主 Activity 后系统将调用 onAttach() 回调。此时该 Fragment 处于活跃状态FragmentManager 管理其生命周期状态。此时findFragmentById() 等 FragmentManager 方法会返回此 Fragment。 在发生任何生命周期状态变更之前系统都始终会调用 onAttach()。在发生生命周期状态变更之后系统始终都会调用 onDetach()。 当Fragment被从FragmentManager之中移除并被分离之后会被触发其onDetach()方法说明该Fragment已经不再处于活跃状态并且我们无法通过findFragmentById()检索到。 Fragment生命周期状态与回调 在确定 Fragment 的生命周期状态时FragmentManager 会考虑以下方面 Fragment 的状态极限由其 FragmentManager 确定。Fragment 不能超过其 FragmentManager 的状态。作为 FragmentTransaction 的一部分您可以使用 setMaxLifecycle() 在 Fragment 上设置生命周期状态极限。Fragment 的生命周期状态绝对不能超过其父级。例如父 Fragment 或 Activity 必须在其子 Fragment 之前启动。同样子 Fragment 必须在其父 Fragment 或 Activity 之前停止。 这整个规则是很合理的当然只有先启动了父Fragment才能启动子Fragment下面便搬出Fragment生命周期转变的图,可以看到Fragment的生命周期和它的View的生命周期是不一样的 在Fragment发生状态改变的过程中系统会首先调用其新状态关联的生命周期回调然后才会向Lifecycle发送Event事件触发Lifecycle框架下的回调方法。如果Fragment已经实例化的话Fragment 的视图 Lifecycle 也会紧随其后向观察者发出此事件。 当Fragment到达了CREATED状态时就说明它已经被添加到了FragmentManager之中并且已经调用了onAttach方法了。强烈建议将生命周期感知型组件与 Fragment 的 STARTED 状态相关联因为该状态可确保 Fragment 的视图如已创建可用并且可确保在 Fragment 的子 FragmentManager 上安全地执行 FragmentTransaction。如果 Fragment 的视图为非 null在 Fragment 的 Lifecycle 转为 STARTED 后Fragment 的视图 Lifecycle 会立即转为 STARTED。 当 Fragment 转为 STARTED 时系统会调用 onStart() 回调。 Fragment 不再可见后Fragment 及其视图的 Lifecycle 将转为 CREATED 状态并向其观察者发出 ON_STOP 事件。不仅停止父 Activity 或 Fragment 会触发该状态转换而且父 Activity 或 Fragment 保存状态也会触发该状态转换。此行为可保证在保存 Fragment 的状态之前调用 ON_STOP 事件。这使得 ON_STOP 事件成为能够安全地在子 FragmentManager 上执行 FragmentTransaction 的最后一个时间点。 如图所示onStop() 回调与使用 onSaveInstanceState() 保存状态之间的顺序因 API 级别而异。对于 API 28 之前的所有 API 级别在 onStop() 之前调用 onSaveInstanceState()。对于 API 28 及更高级别调用顺序正好相反。
http://www.hkea.cn/news/14259338/

相关文章:

  • 网站空间多大合适深圳海圳公司官网
  • 教做甜点的网站郑州专业公司网站制作公司
  • 网站模仿算侵权吗设计微信小程序多少钱
  • 90设计网站是不是没有视频模板保定做网站
  • 有关网站建设的参考书手机版网站有必要吗
  • 青岛建设网站制作南通 网站建设
  • 自己如何高效有力的维护一个网站做设计及免费素材网站有哪些
  • 单页网站与传统网站的区别做360网站优化快速排
  • 网站seo优化报告贵安新区网站建设
  • 教育类网站怎么做子网站怎么做
  • 国外人像摄影网站转换成wordpress
  • 电子商务网站开发需求分析四川建设银行手机银行下载官方网站下载安装
  • 制作企业网站软件写作网站起点
  • 旅游网站建设主要工作wordpress七牛插件
  • 电商网站建设与管理实践wordpress本地添加图片不显示图片
  • 网站建设策划执行绍兴网络公司网站建设
  • 做儿童交互网站国内十大平面设计公司
  • 定制网站哪家好做网站公司经营范围
  • 做网站设计需要学什么网站创建于
  • 中南大学双一流建设网站深圳关键词推广优化
  • 宁波网站建设详细内容学网站建设多少学费
  • 太原网站制作最新招聘信息wordpress手机版 403
  • 维度网络做网站h5制作培训
  • 四川省工程建设信息网站可以直接进入的正能量网站老狼
  • 网站开发发送短信php wordpress 关系
  • 药品网站模板学习网站建设与管理
  • 论坛模板建站网站建设需要桂ajax吗
  • 新塘做网站黄山网站建设费用
  • 深圳市深圳市住房和建设局网站首页网站mp3播放器代码
  • 企业做网站的痛点有哪些计算机网络技术专业