Android应用开发提高系列(6)——Activity生命周期
前言
四大应用程序组件中Activity是最常用的,也是必须掌握的一个组件。这里分几章梳理归纳一些实用的知识点与大家分享。
声明
欢迎转载,但请保留文章原始出处:)
博客园:http://www.cnblogs.com
农民伯伯: http://over140.cnblogs.com
一、配图及说明
Activity主要的三种状态:
Running(运行):在屏幕前台(位于当前任务堆栈的顶部)
Paused(暂停):失去焦点但仍然对用户可见(覆盖Activity可能是透明或未完全遮挡)
Stopped(停止):完全被另一个Activity覆盖
二、事件方法链
2.1 进入Activity
onCreate -> onStart -> onResume
2.2 BACK键
onPause -> onStop -> onDestroy
2.4 休眠/恢复
休眠: onPause
恢复: onResume
未设置android:configChanges:
onPause -> onStop -> onDestory -> onCreate -> onStart -> onResume
设置了android:configChanges="orientation|keyboardHidden":
不会触发生命周期方法,参见文章这里。
2.6 来电来电,显示来电界面:
onPause -> onStop
关闭电话界面,重新回到当前Activity:
onRestart -> onStart -> onResume
2.7 其他Activity进入下一个Activity:
onPause -> onStop
从其他Activity返回至当前Acitivity:
onRestart -> onStart -> onResume
三、与Activity生命周期结合的应用场景
3.1 与广播(Broadcast)结合
在onResume注册广播(registerLinstener),在onPause注销广播(unregisterLinstener)。 例如:
做"摇一摇"功能(传感器)、监听网络变化,就可以在onResume中注册监听,在onPause里注销掉,已节省资源提高效率。
3.2 与服务(Service)结合
在onStart绑定服务(bindService),在onStop中取消绑定(unbindService)。 例如:
需要通过Service定时更新UI上的数据,而Activity的可见周期在onStart与onStop之间,那么就可以再onStart时启动服务,在onStop时停止服务。为了节约系统资源,除了提高用户体验以外,开发人员应尽可能的优化程序。
3.3 与Cursor结合
使用managedQuery让Activity帮你管理Cursor的生命周期,不用自己去close。但也有一些问题,补充两篇文章:这里1、 这里2。
3.4 释放资源
可以在onDestory中释放一些资源。比如可以在onDestory时调用MediaPlayer的release。
四、注意
4.1 所有Activity生命周期方法的实现都必须先调用其父类版本。
4.2 由于Activity经常会暂停和恢复之间切换,所以onResume和onPause这两个方法应当是轻量级的。
4.3 在系统再某种紧急情况下需要回收内存,onStop、onDestory可能不会被调用,因此需要在onPause中把需要长期保存的数据保存起来。
五、相关文章
[Android中文Wiki] 开发者指南Activities
两分钟彻底让你明白Android Activity生命周期(图文)!
结束
要写的内容很多,同样这方面的文章也很多,仍然建议大家仔细的看Activity的API和开发者指南。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
2011-04-25 [Android]文本框实现搜索和清空效果
2010-04-25 [杀毒]删除U盘autorun.inf
2010-04-25 Sybase Anywhere 11 元数据[SQL Schema]