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

android Activity生命周期

android 中一个 activity 在其生命周期中会经历多种状态。 您可以使用一系列回调来处理状态之间的转换。下面我们来介绍这些回调。
在这里插入图片描述

onCreate(创建阶段)

初始化组件:在这个阶段,Activity的主要工作是进行初始化操作。这包括为Activity设置布局内容,通过调用setContentView()方法加载布局文件。
绑定事件:初始化各种控件,并为其设置监听器。例如,通过findViewById()获取按钮控件,并设置OnClickListener监听用户的点击事件。
配置参数:读取Intent传递过来的数据,并根据需要对Activity进行配置。
加载资源:完成一些资源密集型的操作,如读取文件、数据库查询等,以确保UI显示前一切准备就绪。

onStart(开始阶段)

进入就绪状态:此阶段表明Activity正在被启动,但此时还不在前台。用户仍然看不到Activity。
恢复数据:在onStart阶段,可以重新关联到之前保存的数据,确保Activity能够恢复到之前的状态。
分配资源:为即将展现给用户的Activity准备必须的资源,如网络连接、传感器等。
设置状态:更新Activity的内部状态,以反映它正在运行但尚未出现在前台。

onResume(恢复阶段)

用户交互:在此阶段,Activity进入前台并开始与用户交互。此时Activity处于就绪状态,用户可以看到并操作这个界面。
恢复焦点:Activity会获得系统输入的焦点,用户可以通过键盘、触摸等进行操作。
动画处理:如果有动画需要展示,可以在onResume阶段开始执行。
最后调整:进行最后的UI调整,确保用户体验流畅。

onPause(暂停阶段)

节省资源:当系统认为需要回收内存时,可能会调用此方法。在onPause阶段,Activity即将停止所有CPU使用,但依然可见。
保存数据:在暂停前,应该将当前数据和状态保存下来,防止数据丢失。
中止动画:如果有动画正在运行,应在此时停止,以避免消耗过多资源。
异步处理:如果有一些高优先级的任务还未完成,可在此阶段迅速完成或将其交给其他线程处理。

onStop(停止阶段)

完全不可见:Activity即将完全从用户视线中消失,此时不可见且不再能与用户交互。
释放资源:释放掉不必要的资源,如动态创建的视图、Bitmap等,以节省内存。
保存应用状态:保存必要的应用状态,以便重新回到此Activity时能够恢复。
避免泄露:确保所有的资源都已经正确释放,避免内存泄漏问题。

onRestart(重启阶段)

重新启动:当Activity从停止状态进入重新启动状态时,会调用此方法。此时Activity正准备再次可见。
重置数据:重新初始化数据结构,准备好再次显示UI。
重新绑定:重新绑定到数据源或其他必要服务。
恢复配置:根据保存的状态重新配置Activity,确保一致性。

onDestroy(销毁阶段)

清理资源:这是Activity生命周期的最后一个阶段,即将被销毁。此时应释放所有资源,确保没有任何内存泄漏。
注销监听:取消注册的所有监听器,包括广播接收者和任何回调。
持久化数据:将需要持久化的数据保存到存储设备上。
结束任务:终止所有后台任务,如线程、计时器等。

总结

Activity生命周期涵盖了从创建到销毁的全过程,每个阶段都有其特定的任务和职责,确保应用在不同状态下都能表现出色。必须理解并合理利用这些生命周期方法。


http://www.kler.cn/news/331409.html

相关文章:

  • 简单分享下Python和MySQL管理和执行测试用例
  • SPARK调优:AQE特性(含脑图总结)
  • mongodb光速上手
  • ST-GCN模型实现花样滑冰动作分类
  • 828华为云征文 | 华为云Flexus X实例在混合云环境中的应用与实践
  • flutter_鸿蒙next(win)环境搭建
  • ChatGPT实时语音将于本周向免费用户推出:OpenAI DevDay 2024详细解读
  • 聚势启新 智向未来 | 重庆华阳通用科技有限公司揭牌成立
  • 《RabbitMQ篇》Centos7安装RabbitMQ
  • 论文推荐 |【Agent】自动化Agent设计系统
  • ElasticSearch系列:【Win10环境(版本8.11.1) 】elasticsearch+kibana纪实
  • 智能新宠:BabyAlpha A2开启家庭机器人新时代
  • python全栈学习记录(二十一)类的继承、派生、组合
  • 当AI成为作家,人工智能在写作领域的崛起
  • 滚雪球学Oracle[3.1讲]:Oracle SQL基础
  • 负载均衡--相关面试题(六)
  • 【Node.js】内置模块FileSystem的保姆级入门讲解
  • Leetcode: 0091-0099题速览
  • 新手教学系列——爬虫异步并发注意事项
  • 聚星文社——绘唐科技有什么区别!