今天体会最深的一点就是android的生命周期,
在Android中,进程的生命周期大多数时候是由系统管理的;也由于手机应用的一些
特殊性,所以我们需要更多的去关注各个Android Component的运行时生命周期模型。(所谓手机应用的特殊性主要是指这样2点:
1.
手机应用的大多数情况下我们只能在手机上看到一个程序的一个界面,用户除了通过程序界面上的功能按钮来在不同的窗体间切换,还可以通过Back键和
Home键来返回上一个窗口,而用户使用Back或者Home的时机是非常不确定的,任何时候用户都可以使用Home或Back来强行切换当前的界面。
2. 往往手机上一些特殊的事件发生也会强制的改变当前用户所处的操作状态,例如无论任何情况,在手机来电时,系统都会优先显示电话接听界面。)了解这些
Component的生命周期模型一方面是让我们对软件在手机中的运行情况做到心中有数,更重要的,对于程序开发来说,生命周期中的每一个关键事件都会有
我们可以覆写于各种Component对应基类型的事件处理方法,了解各Component的生命周期就是让我们在开发程序时明白我们该怎样去编写各种事
件的处理代码。
Activity的生命周期模型在Google提供的官方文档上有比较详细的一个图示
。其一共包含7个我们需要关心的关键事件,下面对其分别详细说明(文字中的粗体字表示后文中会经常用到的概念在第一次出现时会给出解释,之后后文不再详细说明):
1. void onCreate(Bundle savedInstanceState)
当Activity被第首次加载时执行。我们新启动一个程序的时候其主窗体的onCreate事件就会被执行。如果Activity被销毁后
(onDestroy后),再重新加载进Task时,其onCreate事件也会被重新执行。注意这里的参数
savedInstanceState(Bundle类型是一个键值对集合,大家可以看成是.Net中的Dictionary)是一个很有用的设计,由于
前面已经说到的手机应用的特殊性,一个Activity很可能被强制交换到后台(交换到后台就是指该窗体不再对用户可见,但实际上又还是存在于某个
Task中的,比如一个新的Activity压入了当前的Task从而“遮盖”住了当前的
Activity,或者用户按了Home键回到桌面,又或者其他重要事件发生导致新的Activity出现在当前Activity之上,比如来电界面),
而如果此后用户在一段时间内没有重新查看该窗体(Android通过长按Home键可以选择最近运行的6个程序,或者用户直接再次点击程序的运行图标,如
果窗体所在的Task和进程没有被系统销毁,则不用重新加载Process,
Task和Task中的Activity,直接重新显示Task顶部的Activity,这就称之为重新查看某个程序的窗体),该窗体连同其所在的
Task和Process则可能已经被系统自动销毁了,此时如果再次查看该窗体,则要重新执行
onCreate事件初始化窗体。而这个时候我们可能希望用户继续上次打开该窗体时的操作状态进行操作,而不是一切从头开始。例如用户在编辑短信时突然来
电,接完电话后用户又去做了一些其他的事情,比如保存来电号码到联系人,而没有立即回到短信编辑界面,导致了短信编辑界面被销毁,当用户重新进入短信程序
时他可能希望继续上次的编辑。这种情况我们就可以覆写Activity的void onSaveInstanceState(Bundle
outState)事件,通过向outState中写入一些我们需要在窗体销毁前保存的状态或信息,这样在窗体重新执行onCreate的时候,则会通过
savedInstanceState将之前保存的信息传递进来,此时我们就可以有选择的利用这些信息来初始化窗体,而不是一切从头开始。
2. void onStart()
onCreate事件之后执行。或者当前窗体被交换到后台后,在用户重新查看窗体前已经过去了一段时间,窗体已经执行了onStop事件,但是窗
体和其所在进程并没有被销毁,用户再次重新查看窗体时会执行onRestart事件,之后会跳过onCreate事件,直接执行窗体的onStart事
件。
3. void onResume()
onStart事件之后执行。或者当前窗体被交换到后台后,在用户重新查看窗体时,窗体还没有被销毁,也没有执行过onStop事件(窗体还继续存在于Task中),则会跳过窗体的onCreate和onStart事件,直接执行onResume事件。
4. void onPause()
窗体被交换到后台时执行。
5. void onStop()
onPause事件之后执行。如果一段时间内用户还没有重新查看该窗体,则该窗体的onStop事件将会被执行;或者用户直接按了Back键,将该窗体从当前Task中移除,也会执行该窗体的onStop事件。
6. void onRestart()
onStop事件执行后,如果窗体和其所在的进程没有被系统销毁,此时用户又重新查看该窗体,则会执行窗体的onRestart事件,onRestart事件后会跳过窗体的onCreate事件直接执行onStart事件。
7. void onDestroy()
Activity被销毁的时候执行。在窗体的onStop事件之后,如果没有再次查看该窗体,Activity则会被销毁。
最后用一个实际的例子来说明Activity的各个生命周期。假设有一个程序由2个Activity
A和B组成,A是这个程序的启动界面。当用户启动程序时,Process和默认的Task分别被创建,接着A被压入到当前的Task中,依次执行了
onCreate, onStart,
onResume事件被呈现给了用户;此时用户选择A中的某个功能开启界面B,界面B被压入当前Task遮盖住了A,A的onPause事件执行,B的
onCreate, onStart,
onResume事件执行,呈现了界面B给用户;用户在界面B操作完成后,使用Back键回到界面A,界面B不再可见,界面B的onPause,
onStop,
onDestroy执行,A的onResume事件被执行,呈现界面A给用户。此时突然来电,界面A的onPause事件被执行,电话接听界面被呈现给用
户,用户接听完电话后,又按了Home键回到桌面,打开另一个程序“联系人”,添加了联系人信息又做了一些其他的操作,此时界面A不再可见,其
onStop事件被执行,但并没有被销毁。此后用户重新从菜单中点击了我们的程序,由于A和其所在的进程和Task并没有被销毁,A的onRestart
和onStart事件被执行,接着A的onResume事件被执行,A又被呈现给了用户。用户这次使用完后,按Back键返回到桌面,A的
onPause,
onStop被执行,随后A的onDestroy被执行,由于当前Task中已经没有任何Activity,A所在的Process的重要程度被降到很
低,很快A所在的Process被系统结束。
分享到:
相关推荐
Android生命周期
在Android应用开发中,理解并掌握Android生命周期是至关重要的。Android生命周期是指一个Activity、Service、BroadcastReceiver或ContentProvider从创建到销毁的过程。每个组件都有其特定的生命周期方法,开发者需要...
### Android 生命周期整合详解 #### 一、Android 生命周期概述 Android 应用程序主要由四大组件构成:Activity(用户界面)、Service(后台服务)、BroadcastReceiver(广播接收器)以及ContentProvider(数据共享...
在Android应用开发中,了解和掌握Android生命周期是至关重要的,因为这直接影响到应用程序的性能、稳定性和用户体验。本文将深入探讨“Android生命周期Demo”,并基于《第一行代码》这本书中的讲解,帮助新手开发者...
当我们谈论“android生命周期管理:启动一个Activity”,我们关注的是如何启动Activity以及在生命周期中的关键回调函数。 1. 了解生命周期回调函数 Activity的生命周期由一系列的回调方法组成,包括onCreate(), ...
这个"Android生命周期的演示程序"旨在帮助我们直观地了解Activity从创建到销毁的各个阶段,以及在不同操作下如何触发这些阶段的转换。 首先,我们要明白Activity的生命周期主要由以下几个关键状态构成: 1. **创建...
Android 生命周期管理:重置一个 Activity Android 生命周期管理是 Android 应用程序开发中一个非常重要的概念,涉及到 Activity 的生命周期管理,包括 Activity 的创建、启动、停止、销毁等过程。在 Android 中,...
"Android生命周期测试"就是一个专门针对这个问题进行探究的例子,旨在解决程序在运行时可能出现的异常情况,如自动黑屏或返回时程序崩溃。下面我们将深入探讨Android生命周期及其测试的相关知识点。 首先,Android...
开始Activity:在这个阶段依次执行3个生命周期的方法,分别是onCreate、onStart和onResume方法。 Activity重新获得焦点:如果Activity重新获得焦点,会依次执行3个生命周期,分别是 onRestart、onStart和...
这个"Android生命周期例子"提供了深入理解这一概念的实践代码。生命周期管理是确保应用性能、响应性和资源有效利用的基础。 首先,Android Activity的生命周期可以分为几个主要阶段:创建(Creation)、启动(Start...
对android应用程序的生命周期有一个很详细的介绍,非常适合初学者
为了帮助开发者更有效地跟踪和控制这些组件的状态,出现了一类被称为"生命周期监听工具库"的辅助工具,如"Android-Android生命周期监听工具库"。这类库通常提供便利的方法来监控和管理应用程序的生命周期,以避免...
Android生命周期是Android应用开发中的核心概念,它定义了Android组件(特别是Activity)在不同操作下所经历的状态变化。本文将通过一个Demo实例,帮助你深入理解Android生命周期,并着重讲解如何重写关键的七个方法...
android生命周期详解,新手必看,很详细
android生命周期介绍
Android 生命周期管理 - 暂停和恢复 Activity Android 生命周期管理是 Android 应用程序开发中的一個关键概念,涉及到 Activity 的生命周期管理,其中包括暂停和恢复 Activity。下面我们将详细介绍 Android 生命...
本文将深入探讨“android生命周期研究”,并基于提供的标签“源码”和“工具”进行详细阐述。 首先,Android应用的主要组件有四大类:Activity、Service、BroadcastReceiver和ContentProvider。每个组件都有其独特...
总之,Android生命周期的管理是开发者必备的技能,通过对Activity生命周期的理解和实践,可以编写出更加智能、响应迅速的应用程序。结合模拟点击的实验,开发者能更好地掌握这些概念并在实际项目中应用。
"android生命周期demo"是一个官方示例,旨在帮助开发者直观地理解Activity在不同操作下的状态变化,以及如何适当地处理这些变化。在这个demo中,通过模拟Activity之间的跳转和结束,展示了Activity的生命周期方法的...
android生命周期课件 讲解挺详细的