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

wordpress没有找到站点固定ip 建网站

wordpress没有找到站点,固定ip 建网站,国内p2p网站建设,网站建设投放广告1. 核心目标与设计思想 解耦生命周期管理: 将 Activity/Fragment 的生命周期回调逻辑从视图控制器中剥离,让业务组件(如 Presenter, Repository 封装)能独立感知生命周期。 状态驱动: 将离散的生命周期事件 (ON_CREAT…

1. 核心目标与设计思想
  • 解耦生命周期管理: 将 Activity/Fragment 的生命周期回调逻辑从视图控制器中剥离,让业务组件(如 Presenter, Repository 封装)能独立感知生命周期。

  • 状态驱动: 将离散的生命周期事件 (ON_CREATEON_START...) 抽象为连续的状态 (CREATEDSTARTED...),更符合逻辑。

  • 观察者模式: 基于 LifecycleOwner (被观察者) 和 LifecycleObserver (观察者) 实现订阅/通知机制。

2. 核心角色与职责
  1. LifecycleOwner (生命周期拥有者):

    • 代表: ComponentActivityFragment (均实现此接口)。

    • 职责: 对外声明“我拥有生命周期”,并通过 getLifecycle() 方法暴露 Lifecycle 对象(桥梁)。

  2. Lifecycle (生命周期抽象/桥梁):

    • 代表: LifecycleRegistry (核心实现类)。

    • 职责:

      • 维护当前生命周期 State (DESTROYEDINITIALIZEDCREATEDSTARTEDRESUMED)。

      • 提供 addObserver()/removeObserver() 注册/注销 LifecycleObserver

      • 在宿主状态变化时,同步状态分发事件给所有观察者。

  3. LifecycleObserver (生命周期观察者):

    • 代表: 开发者自定义的业务逻辑类 (实现此接口)。

    • 职责: 接收并响应生命周期事件。实现方式:

      • 接口回调: 实现 DefaultLifecycleObserver 或 LifecycleEventObserver 接口。

      • 注解驱动: 使用 @OnLifecycleEvent(Lifecycle.Event.XXX) 注解方法 (已废弃,推荐接口方式)。

3. 生命周期事件传递流程 (核心机制)
  1. 宿主绑定桥梁:

    • ComponentActivity/Fragment 在构造时创建并持有 LifecycleRegistry 实例。

    • 其 getLifecycle() 返回此实例。

  2. 观察者注册:

    • 业务组件调用 getLifecycle().addObserver(myObserver) 注册自己。

    • LifecycleRegistry 将 myObserver 存储在其内部的观察者集合 (mObserverMap) 中。

  3. 生命周期捕获 (关键点):

    • Activity: 通过一个无 UI 的 ReportFragment 注入到 Activity 中。该 Fragment 的生命周期回调触发时,调用 LifecycleRegistry.handleLifecycleEvent(event)

    • Fragment: 其原生生命周期方法直接调用 LifecycleRegistry.handleLifecycleEvent(event)

  4. 状态同步与事件分发:

    • handleLifecycleEvent(event) 将 Event 转换为目标 State (moveToState())。

    • 触发 sync() 同步过程:

      • 比较当前 mState 与所有观察者内部记录的 State

      • 状态落后: 调用 forwardPass(),依次分发 ON_CREATE -> ON_START -> ON_RESUME 等事件,提升观察者状态。

      • 状态超前: 调用 backwardPass(),依次分发 ON_PAUSE -> ON_STOP -> ON_DESTROY 等事件,降低观察者状态。

      • 适配器分发: LifecycleRegistry 内部使用 ObserverWithState 包装观察者。其 dispatchEvent() 方法最终通过 适配器 (FullLifecycleObserverAdapter 等) 将通用的 onStateChanged() 调用,路由到观察者具体的 onCreate()onStart() 等回调方法上。

  5. 自动清理:

    • 当宿主被 永久销毁 (非配置变更,如用户按返回键) 时:

      • 宿主 onDestroy() 中调用 LifecycleRegistry 的 handleLifecycleEvent(ON_DESTROY)

      • LifecycleRegistry 状态变为 DESTROYED

      • LifecycleRegistry 遍历所有观察者,调用其 onStateChanged() 传递 ON_DESTROY 事件。

      • LifecycleRegistry 清空 其内部的观察者集合 (mObserverMap.clear())。

      • 观察者对象失去引用,可被 GC 回收。

4. 关键优势与解决痛点
  • 解耦清晰: 业务逻辑不再需要持有 Activity/Context 引用,只需依赖 Lifecycle API,彻底避免内存泄漏风险

  • 状态完整感知: 即使 Observer 在 onResume() 之后才注册,也能通过 sync() 过程收到之前的状态事件 (ON_CREATEON_START),保证逻辑完整性。

  • 作用域管理: LifecycleOwner 定义了作用域边界 (Activity 级、Fragment 级),同一作用域内获取的是同一个 ViewModel (依赖 Lifecycle 机制)。

  • 高效安全: LifecycleRegistry 保证了状态同步和事件分发的线程安全 (主线程) 和一致性 (状态机模型)。

  • 扩展灵活: LifecycleObserver 接口设计允许多种实现方式 (接口回调、注解 - 已废弃),适配不同场景。

5. 总结回答 

Lifecycle 的核心原理是通过 LifecycleOwner 暴露 LifecycleRegistry 作为桥梁,利用观察者模式让业务组件 (LifecycleObserver) 订阅生命周期。LifecycleRegistry 维护一个状态机 (State),当 Activity/Fragment (通过 ReportFragment 或自身回调) 触发生命周期 Event 时,LifecycleRegistry 进行状态转换并精确同步给所有观察者 (通过 sync() 和适配器分发)。其设计完美解耦了生命周期管理与业务逻辑,通过自动状态同步和销毁时清理机制,确保了内存安全和数据一致性。


回答加分点:

  • 对比传统方式: 强调相比直接在 Activity 中重写一堆生命周期方法,Lifecycle 让代码更模块化、可测试、可复用。

  • 提 SavedStateHandle 如果需要处理进程死亡恢复,可补充 “ViewModel 可结合 SavedStateHandle,它利用 Lifecycle 的 ON_STOP 事件自动保存数据到 Bundle”。

  • 状态图理解: 能简述官网的生命周期状态迁移图 (INITIALIZED -> CREATED -> STARTED -> RESUMED 和反向过程)。

  • 设计模式: 明确指出使用了 观察者模式 (核心)、状态模式 (State 管理)、适配器模式 (FullLifecycleObserverAdapter)。

参考资料:

https://juejin.cn/post/7470916546283864115


文章转载自:

http://AfYushUc.nfpct.cn
http://zlY8APhi.nfpct.cn
http://g495NH6A.nfpct.cn
http://Xc7dgr0v.nfpct.cn
http://ENzLxVvs.nfpct.cn
http://HuxXm3yy.nfpct.cn
http://Al2BkP8B.nfpct.cn
http://ifBRVOQL.nfpct.cn
http://YjXKsQy2.nfpct.cn
http://Olyrvswv.nfpct.cn
http://t5tbEzoR.nfpct.cn
http://MgVwkyHq.nfpct.cn
http://HXnJ5WgY.nfpct.cn
http://l2XlC1s5.nfpct.cn
http://ZHcLP6yz.nfpct.cn
http://ZXYw1IUP.nfpct.cn
http://3iLFuAMp.nfpct.cn
http://jDDmO1kQ.nfpct.cn
http://ieKOUY0Y.nfpct.cn
http://jEToAwFB.nfpct.cn
http://bohie27L.nfpct.cn
http://Ai8gmc6v.nfpct.cn
http://oj12qoer.nfpct.cn
http://Lsh4pig8.nfpct.cn
http://s40kZ02V.nfpct.cn
http://QkNXvB1G.nfpct.cn
http://DgmatRQV.nfpct.cn
http://UTEAUqJr.nfpct.cn
http://L0be8BF9.nfpct.cn
http://5CkMEEOW.nfpct.cn
http://www.dtcms.com/wzjs/737137.html

相关文章:

  • 华茂达建设集团网站三个字的洋气商标名字
  • 买卖网站金融课程网站模板下载
  • 珠海市企业网站制作品牌wordpress js加载慢
  • 阿玛尼手表官方网站查询正品怎么做自助交易网站
  • 帮助网站源码华为外包公司排名
  • 宁波建站价格dw做网站怎么设置页面音乐
  • 长沙网站建设 599中囯军事网
  • 后端网站开发培训百度快速优化排名软件
  • 文化馆网站建设解决方案潍坊大型做网站建设的公司
  • 做模型常说的d站是什么网站网站建设的栏目内容
  • 做同城购物网站wap的网站模板
  • 安康网站建设公司电话深圳网站建设忧化
  • 怎样用ps做网站首页图夏津网站建设
  • 威海高区建设局官方网站办公装修设计
  • 校园门户网站建设公司网站功能描述
  • 莱西网站网站建设星速浏览器
  • 温州网站建设公司电话河源哪有做网站
  • 苏州企业网站设计购物网站开发的难点
  • 公司主页网站开发wordpress发文章后显示两篇
  • 六盘水市诚信网站建设公司莱芜网络营销代理
  • openshift 做网站黑龙江做网站哪家好
  • 西安大型网站建设公司马可波罗网介绍
  • 建设官方网站的主要作用中山住房和建设局工程交易网站
  • 杭州淘策网站开发在线网页视频提取
  • 做彩铃网站做本地网站怎么挣钱
  • 网站被k是什么意思ckeditor for wordpress
  • 做私活的网站重庆森林为什么不能看
  • whois域名查询网站成都网站建设公司创新互联
  • 做电影下载网站需要什么软件好wordpress 获取分类列表
  • 个人网站趋向西安seo优化培训