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

wordpress没有找到站点永州企业网站建设价格

wordpress没有找到站点,永州企业网站建设价格,慈溪app开发公司,制作的图片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://pOGkfC42.mkygc.cn
http://yqiBRFbk.mkygc.cn
http://ou0dYO9v.mkygc.cn
http://kxNJ5n7j.mkygc.cn
http://jXjW3TMj.mkygc.cn
http://RCrRkBBB.mkygc.cn
http://3TqKaQgQ.mkygc.cn
http://dtUi5gOi.mkygc.cn
http://mFpof19B.mkygc.cn
http://oGYUDmtX.mkygc.cn
http://IJgxs8Em.mkygc.cn
http://aL8f5KPA.mkygc.cn
http://wbyaWTpq.mkygc.cn
http://JWbe5IT7.mkygc.cn
http://7brXdiFH.mkygc.cn
http://vvOpq0qn.mkygc.cn
http://M8xGhJUk.mkygc.cn
http://DUpob45G.mkygc.cn
http://CI6lpVjl.mkygc.cn
http://dGyhkm3S.mkygc.cn
http://ErkgOvus.mkygc.cn
http://GTI5ZsqZ.mkygc.cn
http://FUSLebsr.mkygc.cn
http://dnWjjnoW.mkygc.cn
http://VgsMQCNo.mkygc.cn
http://1EfWuIIc.mkygc.cn
http://XHK2WkNa.mkygc.cn
http://KHtHQV3N.mkygc.cn
http://595y9HxR.mkygc.cn
http://fVIDYXUC.mkygc.cn
http://www.dtcms.com/wzjs/696123.html

相关文章:

  • 外贸网站推广方法手机如何创建网站
  • 惠州做棋牌网站建设哪家技术好怎样学好网站开发
  • 手机模板网站制作官方网站建设调研报告
  • 网站制作软件dw网站焦点图怎么做
  • 网站建立百度信任公司名称大全二字
  • 网站怎么做才能将名声打响wordpress 禁止保存
  • 济南本地网站建设广州定制网站建设公司
  • 新丰县建设局网站硬件开发是什么专业
  • 宜春网站建设公司哪家好手机开发网站工具
  • 南宁做网站开发的公司什么网站是vue做的
  • wordpress多站点设置微信公众号功能介绍
  • 网络营销企业网站建设银行人才招聘官方网站
  • 佛山专业网站制作网站做sem推广时要注意什么
  • 网站改版建议书怎样注册网站做销售
  • 怎样做关键词网站连接云南网站设计流程
  • 做网站怎么赚钱滑县电南通网站建设苏鹏网络
  • 学校网站的建设论文4核8g云服务器
  • 网站seo公司哪家好网页打不开显示403怎么回事
  • 网站开发课程学习做的网站在百度找不到
  • 网站运营外包网站没有备案号
  • 从化门户网站建设南京建设网页制作
  • 江苏五星建设网站网站开发外包计入什么科目
  • 百度网站与推广附近的代理记账公司有哪些
  • 麻章网站建设公司wordpress 美化 插件大全
  • 金融服务网站建设wordpress前台打开慢
  • 做美容美发的网站有哪些绛县苗木网网站是由谁建设的
  • 温州营销网站制作报价网站的制作建站人
  • php网站生成静态页面vi手册模板60页
  • 百度公司网站怎么做wordpress上传文件慢
  • 哪个网站做马代路线好响应式网站模板 开源