深入Activity生命周期(一)

简介: 刚学Android的同学必须要掌握的四大组件是activity service broadcastReceiver provider,而activity是有界面的,需要在不同的阶段做不同事情。因此深刻理解activity的生命周期至关重要。

    刚学Android的同学必须要掌握的四大组件是activity service broadcastReceiver provider,而activity是有界面的,需要在不同的阶段做不同事情。因此深刻理解activity的生命周期至关重要。大家都很想理解这其中奥秘,下面就分3篇来深入探寻activity生命周期。

   下面这张图应该大家都会熟悉的:

    当一个Activity启动的时候 首先会调用onCreate()方法,一般我们在这里完成一些初始化的工作;

    然后调用onStart()方法,这个方法只能被父类调用,如果手动调用则会出异常。onStart()方法必须是在onCreate()之后被调用或者Acitvity被stopped以后才被父类调用。

           通常是都是在onCreate()方法或者是onReStart()方法后执行。因为如果Activity不存在,在onCreate()以后必须要onStart(),Activity才能起来,而如果是Activity

           被stop了以后,Activity需要重新启动,那么由系统调用onStart()方法。

   然后调用onResume()方法,这时候Activity的是完全可视的,处于与用户交互状态。

   如果这时候有其他的应用弹出来,遮住了Activity的部分界面,那么就会调用onPause()方法,暂停Activity。

   如果其他应用完全的把Activity遮住了以后,那么就会调用onStop方法。

   如果系统系统回收了Activity,或者调用finish()方法,那么就会调用onDestroy()方法,该Activity就要被完整的回收了,释放资源和空间。

 

   当然图中其中还有其他的几种分支情况,没有全部都说到。

   下面以一个实际例子来说明Activity生命周期:

   假设现在你打算玩 愤怒的小鸟,安装好apk,点击图标,这时候Activity要调用onCreate()方法,在这个方法中完成初始化UI控件,由于Activity是UI线程,顺序执行onStart()方法,这个方法中要做一些与用户交互界面需要准备的数据以及图像的工作,万事俱备了,执行onResume()方法,这时候你看到的是愤怒的小鸟的界面,

     

    进入的游戏中,今天你手很热,都过了第8关了,已经发送了第一支小鸟了,眼见就要创新记录了,

    这时候很不巧,你的女朋友给你发了一条短信问你:hi,在干吗呢?。手机的顶部就会有一条提示,把顶部的提示拉下来一半,没有完全挡住 愤怒的小鸟 的界面 ,发现能完全看得到信息内容了,但是然后你决定不理她,继续玩,把顶部的提示放回去,又过了一关。

         

           这个过程就会调用onPause()方法。然后然后调用了onResume()方法。

    这时候女朋友发现你没有回信息,于是给你打电话过来了,系统会自动的优先电话程序给你切到打入电话,然后出现接电话的界面,那么这个过程中会依次的调用onPause(),和onStop()方法。

    当你打完电话了(在电话中声泪俱下 痛哭流涕 发自内心认错 保证以后一定及时回复信息,并且下午带她去吃大餐),按home键切回来愤怒的小鸟时,发现程序还是在第9关,而且也是在才发射了一只小鸟的状态。

 

 

  具体分析生命周期流程,有以下两种:

         1)  如果系统没有回收掉Activity 愤怒的小鸟,那么系统经过的流程是onRestart(),onStart(),onResume(),然后就是你看到的界面了。         

         2) 如果你打电话的时候很长,系统认为Activity需要回收的时候就会把 愤怒的小鸟回收掉,释放资源,这时候当你按home键切回来愤怒的小鸟,系统会调用onCreate(),

                onStart(),onResume(),然后就是你看到的Activity界面了。

    打完电话以后,考虑到要马上动身带她去吃大餐,决定关闭程序,你选择了menu,退出按钮,这时就会调用finish(),然后onDestroy(),就是一个完整的退出了。

  注:

   当然事实上的愤怒的小鸟不是我说的这么简单的,里面有更复杂也有更多的图像处理,我只是单从生命周期以自己的理解给大家做个分享,别喷。。。

   有说的不对的地方,请给我留言,谢谢。

           

  

 

 

 

 

 

 

 

 

目录
相关文章
|
2天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
13天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1283 5
|
12天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1312 87
|
1天前
|
弹性计算 安全 数据安全/隐私保护
2025年阿里云域名备案流程(新手图文详细流程)
本文图文详解阿里云账号注册、服务器租赁、域名购买及备案全流程,涵盖企业实名认证、信息模板创建、域名备案提交与管局审核等关键步骤,助您快速完成网站上线前的准备工作。
171 82
2025年阿里云域名备案流程(新手图文详细流程)
|
1天前
|
自然语言处理 前端开发
基于Electron38+Vite7.1+Vue3+Pinia3+ElementPlus电脑端admin后台管理模板
基于最新版跨平台框架Electron38整合Vite7+Vue3+ElementPlus搭建轻量级客户端中后台管理系统解决方案。
152 86