深入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(),就是一个完整的退出了。

  注:

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

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

           

  

 

 

 

 

 

 

 

 

目录
相关文章
|
人工智能 监控 算法
探索软件测试的未来:AI与自动化的融合
随着人工智能(AI)技术的飞速发展,软件测试领域正迎来一场革命。本文将深入探讨AI如何与自动化测试相结合,提升测试效率和准确性,同时分析面临的挑战和机遇。我们将通过具体案例,展示AI在自动化测试中的应用,并预测未来发展趋势。
314 31
|
监控
在 PowerShell 中获取内存使用率百分比
【8月更文挑战第27天】
436 5
|
网络协议 安全 网络安全
LabVIEW程序的常见加密方式
LabVIEW程序的常见加密方式
792 1
|
监控 算法 Linux
LabVIEW开发CAN通讯协议
LabVIEW开发CAN通讯协议
583 0
|
Web App开发 Linux 图形学
Autodesk Maya 2025发布:3D建模与动画的巅峰之作
Autodesk Maya 2025推出了多项新功能,包括原生支持Apple芯片,更新的建模工具如智能拉伸,绑定和角色动画的改进,运动轨迹和摄影表编辑器的优化,图形编辑器热键变更。此外,还整合了Arnold 5.4.0、USD插件更新、Lookdevx 1.3.0、Bifrost 2.9.0.0以及Substance 2.5.0。该软件支持Windows 10/11、macOS和Linux系统。推荐使用最新版Safari、Chrome、Edge或Firefox浏览器,并需要64位Intel或AMD CPU、8GB(建议16GB以上)RAM和7GB硬盘空间。
974 0
|
机器学习/深度学习 人工智能 运维
如何通过AI 全面提升运维效率?选型宝分享AIOps实战案例
前言 运维,是企业IT最基础的工作,也是痛点、槽点最多的工作。海量的数据、频繁的报警、艰难的排障、无情的投诉,足以让运维工程师们感到崩溃和绝望…… Gartner在ITOA (IT Operations Analytics IT运营分析)的基础上,提出了AIOps的概念。
3533 0
|
容器 .NET 开发框架
.net core 注入中的三种模式:Singleton、Scoped 和 Transient
我们都知道在 Startup 的 ConfigureServices 可以注入我们想要的服务,那么在注入的时候有三种模式可以选择,那么我们在什么时候选择什么样的模式呢? 在讲注入模式之前,我觉得很有必要了解服务生存期的概念! 服务生存期:ASP.NET Core 提供了一个内置的服务容器 IServiceProvider 负责管理服务的生命周期,从被依赖注入容器创建开始(就是将服务注入到你要使用的类的构造函数中),然后框架负责创建依赖关系的实例,并在不再需要时对其进行处理(就是说等我们调用完服务时,容器会自己去对注入的服务进行释放)。
2146 0
|
小程序
阿里云商标查询小程序上线(一键查询)
阿里云商标查询小程序上线(来看看支持哪些功能),商标查询可以使用阿里云商标查询微信小程序,可以查询到商标信息和商标注册风险,输入商标名称、注册号、申请人即可查询,输入商标名称可以一键查询注册风险,阿里云百科分阿里云商标查询小程序入口及使用方法教程:
1688 0
阿里云商标查询小程序上线(一键查询)
|
消息中间件 存储 API
iOS小技能:队列管理推送通知,解决收款到账并发语音播报问题。
需求:收款到账语音提醒功能 NSE是比Voip更优雅的解决方案,完成迁移后,总体代码量也比Voip方案少了不少。
522 0
iOS小技能:队列管理推送通知,解决收款到账并发语音播报问题。
|
弹性计算 运维 安全
RAM账号权限管理
希望通过本次演讲,让大家更深入了解RAM账号权限管理,以某电商网站项目为例,根据研发、测试、生产环境划分及业务流程,使用阿里云RAM访问控制服务规划实现资源分组、账号用户体系、权限分配、安全加固、定期安全检查等措施的最佳实践。
2811 1
RAM账号权限管理