Lifecycle 使用

发布时间:2026/7/24 22:12:17

Lifecycle 使用
为什么要有LifecycleLifecycle 诞生的背景有三个生命周期不统一Activity 和 Fragment 的生命周期存在差异Fragment 更复杂且不同系统版本下组合使用时行为不一致容易产生隐蔽 bug开发和维护成本高。开发者真正关心的只有六个核心状态业务逻辑如数据加载、定位开关、动画暂停/恢复实际上只依赖create、start、resume、pause、stop、destroy这六个状态。而 Activity/Fragment 中其他回调如onCreateView、onSaveInstanceState对通用逻辑是冗余的导致生命周期显得“凌乱无规律”。生命周期代码难以复用和抽离传统写法下生命周期逻辑写在 Activity/Fragment 内部导致页面组件臃肿外部对象很难优雅地感知和管理生命周期。解决方案计算机世界里大部分问题通过增加一个抽象层来解决。Android 团队推出了Lifecycle统一了 Activity、Fragment 等组件的生命周期行为。有了 Lifecycle 之后开发者只需与 Lifecycle 打交道。业务逻辑不再关心它运行在 Activity 还是 Fragment 中甚至可以用 Lifecycle 定义自己的生命周期组件。不使用 Lifecycle 手动绑定生命周期publicclassLocationManager{publicvoidstart(){/* 开始定位 */}publicvoidstop(){/* 停止定位 */}}publicclassMainActivityextendsAppCompatActivity{privateLocationManagerlocationManager;OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);locationManagernewLocationManager();}OverrideprotectedvoidonStart(){super.onStart();locationManager.start();// 手动调用}OverrideprotectedvoidonStop(){super.onStop();locationManager.stop();// 手动调用}}堆很多和页面本身无关的生命周期代码。这会导致 Activity / Fragment 变得很臃肿。Lifecycle 的使用添加依赖dependencies{implementationandroidx.lifecycle:lifecycle-runtime-ktx:2.6.2// 核心库implementationandroidx.lifecycle:lifecycle-common-java8:2.6.2// 支持 Java8}创建观察者类两种方式 实现LifecycleObserver接口 或者 通过注解onLifecycleEvent实现DefaultLifecycleObserver接口publicclassMyLocationObserverimplementsDefaultLifecycleObserver{OverridepublicvoidonCreate(NonNullLifecycleOwnerowner){// 开始定位}OverridepublicvoidonDestroy(NonNullLifecycleOwnerowner){// 停止定位释放资源}}DefaultLifecycleObserver将六个方法变为了接口默认方法可以选择性实现而不是全部实现 继承自FullLifecycleObserverFullLifecycleObserver实现了六个方法 继承自LifecycleObserver。LifecycleObserver是一个空接口使用注解onLifecycleEvent(已过时不推荐新项目)publicclassMyObserverimplementsLifecycleObserver{OnLifecycleEvent(Lifecycle.Event.ON_RESUME)publicvoidonResume(){// 恢复操作}}在Activity/Fragment 中添加观察者publicclassMainActivityextendsAppCompatActivity{OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getLifecycle().addObserver(newMyLocationObserver());//实际获取的是lifecycle的实现类 lifecycle registry}}使用Lifecycle 可以使得代码更简洁更容易维护更不容易出错防止内存泄漏防止忘记停止一些服务

相关新闻

AI-HF Patch终极指南:3分钟搞定AI少女游戏增强补丁

AI-HF Patch终极指南:3分钟搞定AI少女游戏增强补丁

2026/7/24 22:12:17

AI-HF Patch终极指南:3分钟搞定AI少女游戏增强补丁 【免费下载链接】AI-HF_Patch Automatically translate, uncensor and update AI-Shoujo! 项目地址: https://gitcode.com/gh_mirrors/ai/AI-HF_Patch AI-HF Patch是一款专为AI-Shoujo(AI少女&a…

QKeyMapper终极指南:5分钟掌握Windows游戏手柄键盘鼠标全能映射技巧

QKeyMapper终极指南:5分钟掌握Windows游戏手柄键盘鼠标全能映射技巧

2026/7/24 22:12:17

QKeyMapper终极指南:5分钟掌握Windows游戏手柄键盘鼠标全能映射技巧 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到键…

可白嫖源码---课程设计--毕业设计--springboot校园流浪动物健康档案系统[编号:project17069](案例分析)

可白嫖源码---课程设计--毕业设计--springboot校园流浪动物健康档案系统[编号:project17069](案例分析)

2026/7/24 22:12:17

本文仅展示核心实现逻辑与部分代码片段,完整项目源码、配套文档、数据库脚本内容较多,篇幅有限无法全部放出。 有需要完整资源的同学,可以在评论区留言【资料或领源码】,我会一 一回复站内私信,发送完整文件 目 录 摘…

高性能ADC评估实战:从ADS7851EVM-PDK套件解析数据采集系统设计

高性能ADC评估实战:从ADS7851EVM-PDK套件解析数据采集系统设计

2026/7/24 23:02:19

1. 项目概述:从芯片到系统,一个高性能ADC的完整评估之旅在精密测量、工业自动化或者高端音频处理领域,工程师们常常面临一个核心挑战:如何将现实世界中连续变化的物理信号(比如电机电流、传感器电压、音频波形&#xf…

AIGC检测工具选型陷阱大全,92%团队踩坑的4个致命误区:从BERT到LLM-Detector实战评测报告

AIGC检测工具选型陷阱大全,92%团队踩坑的4个致命误区:从BERT到LLM-Detector实战评测报告

2026/7/24 23:02:19

更多请点击: https://intelliparadigm.com 第一章:AI生成内容检测的底层逻辑与演进脉络 AI生成内容检测并非简单比对文本相似度,其核心在于识别模型输出中隐含的统计指纹、语义冗余性与分布偏差。早期方法依赖人工设计特征(如词频…

《Spring Boot 4 与 Nacos 3.2.3 最强整合实战:配置管理 + 服务发现全解析》

《Spring Boot 4 与 Nacos 3.2.3 最强整合实战:配置管理 + 服务发现全解析》

2026/7/24 23:02:19

Spring Boot 4.x 已全面拥抱 Jakarta EE 10,底层基于 Spring Framework 6.x,最低要求 JDK 17。Nacos 3.2.3 作为阿里云开源的最新稳定版,不仅支持 gRPC 长连接,还大幅提升了 AP 集群的可用性。两者结合,堪称 Java 微服…

Beyond Compare 5密钥生成技术深度拆解:从逆向工程到RSA算法实现

Beyond Compare 5密钥生成技术深度拆解:从逆向工程到RSA算法实现

2026/7/24 23:02:19

Beyond Compare 5密钥生成技术深度拆解:从逆向工程到RSA算法实现 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare 5作为业界领先的文件对比工具,其授权验证…

小爱音箱音乐播放神器:XiaoMusic 完全指南,解锁无限音乐自由

小爱音箱音乐播放神器:XiaoMusic 完全指南,解锁无限音乐自由

2026/7/24 23:02:19

小爱音箱音乐播放神器:XiaoMusic 完全指南,解锁无限音乐自由 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 还在为小爱音箱的音乐版权限制而…

5分钟零成本搭建:如何用AI股票分析工具让投资决策更简单?

5分钟零成本搭建:如何用AI股票分析工具让投资决策更简单?

2026/7/24 22:52:19

5分钟零成本搭建:如何用AI股票分析工具让投资决策更简单? 还在为复杂的股市数据头痛吗?每天面对海量的K线图、财务指标和新闻资讯,普通投资者往往感到无从下手。daily_stock_analysis正是为解决这一痛点而生——这是一款完全免费…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/24 4:17:29

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/24 19:29:25

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/23 1:54:13

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

2026/7/24 0:01:07

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解

[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解

2026/7/24 0:01:07

srcampy /libsrcampy 名称释义先明确结论: 官方文档没有公布标准化英文全称,是地平线内部项目缩写;行业公认拆解如下:srcampy Source Amplifier Python bindingsrc Source(图像源:MIPI Sensor、视频源&am…

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

2026/7/24 0:01:07

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…