深入解析Android Activity生命周期(图文教程)

需积分: 48 1 下载量 161 浏览量 更新于2024-09-11 收藏 281KB PDF 举报
"这篇PDF文件详细讲解了Android Activity的生命周期,并通过图文并茂的方式帮助读者理解。作者指出,网络上很多关于Activity生命周期的文章只是简单翻译官方API,难以让人深入理解,因此作者决定重新总结,以期让读者彻底掌握这一关键概念。文中提到了Activity实际上继承自ApplicationContext,并列举了可以重写的一系列生命周期方法,如onCreate()、onStart()、onRestart()、onResume()、onPause()、onStop()和onDestroy()。为了帮助读者更好地理解,作者还提供了一个简单的Demo项目,建议读者跟随步骤实践,通过在各个生命周期方法中添加Log打印来观察执行顺序。" Android Activity的生命周期是Android应用开发中的核心概念,它定义了Activity从创建到销毁的各个阶段以及在不同场景下如何转换。Activity的生命周期方法是开发者管理应用程序状态的关键,每个方法都有其特定的作用: 1. onCreate(Bundle savedInstanceState):Activity首次创建时调用,用于初始化界面和数据。savedInstanceState参数是一个Bundle对象,当Activity被系统销毁后恢复时,可以从中获取之前的状态信息。 2. onStart():Activity变得对用户可见时调用,但可能仍被其他视图遮挡,例如在一个透明的Activity之上。 3. onRestart():当Activity由停止状态重新变为启动状态时调用,这是onStart()之前的一个过渡状态。 4. onResume():Activity完全可见并与用户交互时调用,这是Activity的活动状态。 5. onPause():当Activity即将失去焦点但仍然可见时调用,比如弹出对话框或启动另一个全屏Activity。在此方法中,应保存临时数据并停止耗时操作。 6. onStop():当Activity完全不可见时调用,例如被新启动的Activity覆盖。在此方法中,应释放资源,因为系统可能随时回收该Activity。 7. onDestroy():Activity即将被销毁时调用,可能是用户手动关闭或系统资源回收。这是Activity生命周期的最后阶段,通常用于清理资源。 理解Activity的生命周期对于优化用户体验和防止内存泄漏至关重要。作者提供的Demo项目可以帮助开发者实际操作,通过运行和观察Log输出,直观地理解各个方法的执行顺序和条件。实践是学习Android开发的最好方式,通过亲手实现和调试,开发者能更牢固地掌握Activity生命周期的概念。
2018-03-07 上传
首先,Activity是Android系统中的四大组件之一,可以用于显示View。Activity是一个与用记交互的系统模块,几乎所有的Activity都是和用户进行交互的,但是如果这样就能说Activity主要是用来显示View就不太正确了。 在深入了解Activity之前,我们先要知道一下MVC设计模式,在JAVAEE 中MVC设计模式已经很经典了,而且分的也比较清晰了,但是在Android中,好多人对MVC在Android开发中的应用不是很清楚,下面我就先来介绍一下MVC在Android开发中的应用: M(Model 模型):Model是应用程序的主体部分,所有的业务逻辑都应该写在这里,在Android中Model层与JavaEE中的变化不大,如:对数据库的操作,对网络等的操作都放在该层(但不是说它们都放在同一个包中,可以分开放,但它们统称为Model层)。 V(View 视图):是应用程序中负责生成用户界面的部分,也是在整个MVC架构中用户唯一可以看到的一层,接收用户输入,显示处理结果;在Android应用中一般采用XML文件里德界面的描述,使用的时候可以非常方便的引入,当然也可以使用JavaScript+Html等方式作为View。 C(Controller控制层)android的控制层的重任就要落在众多的activity的肩上了,所以在这里就要建议大家不要在activity中写太多的代码,尽量能过activity交割Model业务逻辑层处理。 好了,在介绍过Android应用开发中的MVC架构后,我们就可以很明确的知道,在Android中Activity主要是用来做控制的,它可以选择要显示的View,也可以从View中获取数据然后把数据传给Model层进行处理,最后再来显示出处理结果。 介绍过Activity的主要作用后,那么我们就要详细说一下Activity了。 Activity生命周期图 Activity 的生命周期是被以下的函数控制的。 public class Activity extends ApplicationContext { protected void onCreate(Bundle icicle); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onFreeze(Bundle outIcicle); protected void onPause(); protected void onStop(); protected void onDestroy(); } onCreate(Bundle) 函数是你进行初始化的地方,这个也是执行 setContentView(View)函数的地方,setContentView(View)函数可以传入一个由XML 编制的UI界面,可以使UI和具体实现完全分离。 onPause()函数是处理用户离开当前 Activity 的地方。更重要的是,任何在当前 Activity中的任何改变都要在这个函数中提交。 Activity有四种状态: 活动状态,当Activity处于Stack(栈)顶时,就是手机当前的现实屏幕,这是 Activity就 处于activity或者运行状态。 运行但是失去焦点,当Activity还处于运行状态时,但是屏幕是有另外一个Activity 处于文档处于焦点状态,当前的Activity就处于pause。 停止,当Activity被另一个Activity完全覆盖的时候,就被停止了,其实就是虽然在 运行,但是用户却看不见。 结束,当Activity处于pause或者stop时,系统可以结束 Activity,回收资源,这 是Activity就是处于结束状态了。 处于结束状态的是Activity,如果要使用户可见,只要重启才可以。 Activity的响应时间 当前Activity所在的线程为主线程,它的响应时间为5秒,如果在当前运行的Activity中进行耗时的操作且响应时间起过5秒,那么程序就会报ANR错误。所以,这也是不建议在Activity中写太多复杂代码的原因之一。 当然,有些代码只能写在Activity中,不然就运行不了(它们不是生命周期方法),比如你想要获得android系统或者硬件一的些信息,就必须在Activity中写出来,如果单独写一个工具类获得不了。