`
endual
  • 浏览: 3546506 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android 生命周期复习1

 
阅读更多

Android开发之旅:组件生命周期(一)

2010-05-05 02:38 by 吴秦, 15981 阅读, 14 评论, 收藏编辑

引言

应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁。在这期间,他们有时候处于激活状态,有时候处于非激活状态;对于活动,对用户有时候可见,有时候不可见。组件生命周期将讨论活动、服务、广播接收者的生命周期——包括在生命周期中他们可能的状态、通知状态改变的方法、及这些状态的组件寄宿的进程被终结和实例被销毁的可能性。

本文主要讨论活动的生命周期及他们可能的状态、通知状态改变的方法。分为以下三部分:

  • 1、活动生命周期
  • 2、保存活动状态
  • 3、协调活动

1、活动生命周期

一个活动有三个基本状态:

  • 激活状态运行状态,这时它运行在屏幕的前台(处于当前任务活动栈的最上面)。这个活动有用户的操作的焦点。
  • 暂停状态,这时活动失去焦点但是它对用户仍可见。也就是说,另一个活动在它的上面且那个活动是透明的或者没有覆盖整个屏幕,因此通过它可以看见暂停状态的活动。一个暂停的活动完全是活着的(它维护着所有的状态和成员信息,且仍然依附在窗口管理器),但是当内存极小时可以被系统杀掉。
  • 停止状态,这时活动完全被其他活动掩盖。它仍然保留所有状态和成员信息,但是对用户它不可见,因此它的窗口时隐藏的且当其他地方需要内存时它往往被系统杀掉。

如果一个活动被暂停或停止,系统可以将它从内存移除,通过要求它结束(通过调用它的finish()方法),或简单地杀掉它的进程。当它再次显示给用户时,必须要完全重新启动和恢复到之前的状态。随着活动从一个状态转为另一个状态,通过调用下面的受保护的方法通知该改变:

  • void onCreate(Bundle saveInstanceState)
  • void onStart()
  • void onRestart()
  • void onResume()
  • void onPause()
  • void onStop()
  • void onDestroy()

所有这些方法都是钩子,你可以重写当状态改变时做适当的工作。所有的活动必须要实现onCreate()去做一些初始化的设置,当对象第一次实例化的时候。很多活动也会实现onPause()去提交数据修改或准备停止与用户交互。

将他们合并在一起,这七个方法定义了活动的整个生命周期。有三个嵌套的循环,你可以通过这七个方法监视:

  • 活动的整个生命时间,从第一次调用onCreate()开始直到调用onDestroy()结束。一个活动在onCreate()中做所有的“全局”状态的初始设置,在onDestroy()中释放所有保留的资源。举例来说,有一个线程运行在后台从网络上下载数据,它可能会在onCreate()中创建线程,在onDestroy()中结束线程。
  • 活动的可视生命时间,从调用onStart()到相应的调用onStop() 。在这期间,用户可以在屏幕上看见活动,虽然它可能不是运行在前台且与用户交互。在这两个方法之间,你可以保持显示活动所需要的资源。举例来说,你可以在onStart()中注册一个广播接收者监视影响你的UI的改变,在onStop() 中注销。因为活动在可视和隐藏之间来回切换,onStart()onStop()  可以调用多次。
  • 活动的前台生命时间,从调用onResume()到相应的调用onPause()。在这期间,频繁地在重用和暂停状态转换——例如,当设备进入睡眠状态或一个新的活动启动时调用onPause(),当一个活动返回或一个新的意图被传输时调用onResume()。因此,这两个方法的代码应当是相当轻量级的。

下面这个图解释了这三个循环和状态之间状态的可能路径。着色的椭圆表示活动的主要状态,矩形表示当活动在状态之间转换时你可以执行的回调方法。

activity_lifecycle

 

 

 

 

 

 

 

 

图1、活动生命周期(来源:Android SDK)

下面的表格对每个方法更详细的描述和在活动的整个生命周期中的定位。

t1t2

注意上面表格的Killable列,它表示当方法返回时没有执行活动的其它代码,系统是否能杀死活动寄宿的进程。三个方法(onPause()onStop()onDestroy())标记为Yes。因为onPause()是唯一一个保证在进程被杀之前会调用的,因此你应该使用onPause()来写任何持久化存储数据。

被标记为No的方法保护活动寄宿的进程在他们调用的时候不会被杀掉。因此活动是可杀掉状态,例如onPause()返回到onResume()调用期间。直到onPause()再次返回,活动是不可杀掉的。其实,没有标记为Killable的活动也是可以系统被杀掉的,不过这仅仅发生在极端困难的情况下,没有有任何其他资源可用。

2、保存活动状态

当系统而不是用户关闭一个活动来节省内存时,用户可能希望返回到活动且是它之前的状态。为了获得活动被杀之前的状态,你可以执行活动的onSaveInstanceState()方法。Android在活动容易被销毁前调用这个方法,也就是调用onPause()之前。该方法的参数是一个Bundle对象,在这个对象你可以以名值对记录活动的动态状态。当活动再次启动时,Bundle同时被传递到onCreate()和调用onCreate()之后的方法,onRestoreInstanceState(),因此使用一个或两个可以重新创建捕获的状态。

因为onSaveInstanceState()方法不总是被调用,你应该仅使用onSaveInstanceState()它来记录活动的临时状态,而不是持久的数据。应该使用onPause()来存储持久数据。

3、协调活动

当一个活动启动另一个活动,他们都经历生命周期转换。一个暂停或许是停止,然而另一个启动。有时,你可能需要协调这些活动。生命周期的回调顺序是明确界定的,特别是当这两个活动在同一个进程中:

  1. 当前活动的onPause()方法被调用。
  2. 接下来,启动活动的onCreate()onStart()onResume()方法按序被调用。
  3. 然后,如果获得不再在屏幕上可见,它的onStop()方法被调用。

修正:第一节——活动生命周期中的表格第一、二行中的第二列(description)中的onRestart()应该为onStart()。
1000多的点击,居然没有人发现这个错误,看了大家根本就没认真看或者说根本没有静心看园子里的任何博文,心痛!还是水帖比较受欢迎。

 

 

 

作者:吴秦
出处:http://www.cnblogs.com/skynet/

分享到:
评论

相关推荐

    android生命周期

    总之,Android生命周期是开发者构建高效、响应快速且用户体验良好的应用的基础。深入理解并合理利用生命周期方法,可以提高应用的性能和稳定性,减少不必要的资源消耗,从而提升应用的整体质量。

    Android期末复习题02

    在Android期末复习题02中,我们关注到几个关键知识点,包括内存回收、Intent的作用、自定义style的声明、Menu的使用、SQLiteOpenHelper的操作、Service生命周期以及BroadcastReceiver的注册。 1. **内存回收**:在...

    android复习题题库

    2. Android中的生命周期函数包括onCreate、onStart、onResume、onPause等,用于保存资源和状态的操作。 五、Java数学运算 1. Java中的Math.round()方法用于将数字四舍五入到最近的整数。 六、Java逻辑运算 1. ...

    Android移动开发复习.pdf

    在Android移动开发中,需要了解Android基础知识、Android应用程序生命周期、Android UI组件、Android存储机制、Android网络编程等方面的知识。 1. Android虚拟机(DVM):每个Android应用程序都在它自己的进程中...

    Android期末复习课件.rar

    - **Activity生命周期**:深入理解Activity的启动、暂停、恢复、销毁等状态,以及如何在不同状态下处理事件。 - **Intent机制**:学习Intent的作用,如何通过Intent启动Activity和Service,以及使用...

    Android面试复习资料

    - 活动(Activity):理解活动生命周期,以及如何在不同状态间切换。 - 布局管理器(Layout Manager):熟悉LinearLayout、RelativeLayout、ConstraintLayout等布局的使用。 - 数据持久化:SQLite数据库的增删...

    android(下)复习总结

    `AppWidgetProvider`作为小部件的监听器,`AppWidgetManager`用于控制小部件的生命周期。 ### 第五章:传感器开发 #### 1. 传感器概述 Android系统通过`SensorManager`提供对各种传感器的访问。`registerListener...

    Android最新复习重点 (1).docx

    2. **Activity生命周期**:Activity的生命周期包括`onCreate()`, `onStart()`, `onResume()`, `onPause()`, `onStop()`, `onDestroy()`等方法。`onCreate()`是首次启动时调用,`onStart()`使Activity变得可见,`...

    android选择题复习题.doc

    1. 活动生命周期:在 Android 中,活动的生命周期是指活动从创建到销毁的过程。在这个过程中,活动会经历不同的状态,例如 Created、Started、Resumed、Paused、Stopped 和 Destroyed。在生命周期的不同阶段,活动...

    Android上学期复习

    Activity是用户界面的代表,它的生命周期包括运行、暂停、停止、销毁等状态。启动和关闭Activity使用startActivity()和finish()方法,startActivityForResult()用于启动Activity并等待结果,然后在onActivityResult...

    Android应用源码之8.Activity生命周期.zip

    在Android应用开发中,Activity是用户界面的基本组件,它...这个“8.Activity生命周期.zip”的示例项目应该是提供了一些实际的例子,帮助开发者直观地看到Activity在不同状态下的行为,是学习和复习这个主题的好材料。

    Android复习总结

    - **Activity**:负责用户界面和交互,有五种状态和七个生命周期方法。例如: - `onCreate()`:初始化 - `onStart()`:即将可见 - `onResume()`:开始交互 - `onPause()`:被遮挡或锁屏 - `onStop()`:不可见 ...

    View生命周期测试工程

    本文将详细探讨“View生命周期测试工程”所涵盖的知识点,旨在帮助初学者理解和熟手们复习这一关键主题。 首先,我们需要理解View的生命周期。一个View的生命周期主要由创建、显示、暂停、恢复和销毁等阶段组成。在...

    Android开发基础复习提纲

    ### Android开发基础复习知识点 #### 一、Android应用程序四大组件详解 **1. Activity** - **定义**: Activity 是 Android 应用程序中的一个组件,它为用户提供了一个屏幕,用于与用户进行交互。它是四大组件之一...

    Android开发技术期末考试复习题[参照].pdf

    Android 开发技术期末考试复习题 ...本节考试题涵盖了 Android 开发技术的方方面面,包括 Android 平台的架构、Android SDK 的功能、Android 中的 UI 组件和布局、Activity 的生命周期方法、存储机制、图形支持等方面。

    Android期末考试复习试卷(仅供参考)85574.doc

    【Android期末考试复习知识点】 ...以上知识点涵盖了Android的基础概念,如操作系统、Activity生命周期、数据存储、UI组件、Intent的使用、线程通信、布局管理等,是Android开发人员应掌握的核心内容。

    Android应用开发期末复习

    例如`ActivityManager`服务用于管理应用程序生命周期并提供标准导航回退堆栈。 3. **系统运行库层**:这一层包含两大部分: - **Dalvik虚拟机**:这是Android平台的虚拟机,专门设计用于设备的内存优化。 - **...

    Android考试复习题

    ### Android考试复习题知识点详解 #### 一、解答题知识点详解 **1. Android应用程序的四大组件** - **Activity**:表示用户可见的界面。一个应用程序通常由多个Activity组成,每个Activity代表一个屏幕上的交互...

Global site tag (gtag.js) - Google Analytics