浅析Android之Activity生命周期

2018-05-14 10:34杨碎明孙文高
知识文库 2018年7期
关键词:调用前台生命周期

杨碎明 孙文高

理解Android的活动(Activity)生命周期是对一个智能机开发人员工非常重要的。 只有这样,才能确保对一个逻辑的用户的应用程序有效管理其资源。Android中的应用程序(app)并不能管理自已的生命周期,而是由系统进行统一的管理。

1引言

在现实生活中,经常会用手机打电话,发短信,玩游戏等,这就需要与手机界面进行交互,用户与程序的交互是能通过Activity完成的,活动就是Android程序的表现层,展示可视化的用户界面,并接收与用户交互所产生的界面事件活动。 活动可表现以下四个状态: 分别是运行 (Running)状态、暂停(paused)状态、停止(Stopped)状态和销毁(Destroyed)状态。 活动的生命周期就是它所在进程的生命周期。 分为三类:可视生命周期,前台生命周期、和完整生命周期。

2活动交互机制

2.1 活动的四个状态

1)当用户界面在它在屏幕前台时,它是激活或运行状态。 它就是响应用户操作的Activity。

2)当一个界面上面有另外一个Activity,使它失去了焦点但仍然对用户可视时,这个界面实质上处于暂停状态。在它之上的Activity如果没有完全遮盖整个手机屏幕,或者是透明的,被暂停的Activity仍然对用户可见,并且是存活状态。

3)当它完全被另一个Activity覆盖时则处于停止状态。它仍然保留所有的状态和成员信息,然而对用户是不可见的。所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常会杀死这个Activity。

4)销毁状态,不在以上三个状态中的活动,如活动已被回收或启动。

3 Activity生命周期

3.1 活动的生命周期

因为活动直接涉及与用户交互界面的处理,而任意时刻与用户交互的界面只有一个,所以Android针对活动的管理采用了具有层次感的栈数据结构。活动栈保存了已经启动并且没有终止的活动,并遵循“先进后出”的原则。例如,在某个时刻只有一个活动处于栈顶,当这个活动被销毁后,下面的活动才可能处于栈顶,或者是有一个新的活动被创建出来,则上一个活动就被压下去。

1)Activity的完整生命周期从首次调用onCreate()这个方法开始,最后调用onDestroy()这个方法结束。在Activity生命周期中,用onCreate()中设置所有“全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。

2)Activity的可视生命周期从调用onStart()方法开始,最后调用的onStop()结束。在这个过程中,,用户可以在屏幕上看到Activity活动, 虽然有时它不和用戶交互,也许它位于后台 3)Activity的前台生命周期从调用onResume()开始,最后调用相应的onPause()为结束。在这个过程中,Activity位于前台最上面并与用户进行交互, 传递消息。Activity会经常在暂停和恢复之间进行状态转换——例如当设备转入休眠状态或者有新的Activity启动时,将调用onPause() 方法。当Activity获得结果或者接收到新的Intent时会调用onResume() 方法。

4)Activity的onSaveInstanceState()和 onRestoreInstance

State()方法

Activity的 onSaveInstanceState() 和 onRestoreInstance

State()这两两个方法并不是生命周期方法,它们与 onCreate()、onPause()等生命周期方法有本质的区别,它们常常并不会被调用,而当发生意外时才触发。如当应用遇到意外情况,由系统销毁一个Activity时,onSaveInstanceState()才会被调用。但是当用户有意去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。在这种情况下因为用户的行为决定了,不需要保存Activity的状态。通常onSaveInstanceState()只适合用于保存一些 暂时性的状态,而onPause()适合用于数据的永久保存。

Activity生命周期一般分为四个基本状态,分别是活动状态(running),暂停状态(paused),停止状态(stopped)和死亡状态。 Activity七大生命周期函数, Activity一共有七个生命周期函数,分别为 onCreate(), onRestart(), onStart(), onReusme(), onPause(), onStop(), onDestory()。其实在一个Activity整个生命周期中上述七大生命周期并不是一定都会被执行的,有时由于系统内存不足的缘故,部分生命周期函数将会被跳过不执行。

(作者单位:西安交通工程学院)

猜你喜欢
调用前台生命周期
基于云制造模式的产品碳足迹生命周期评价
一场丑态百出的“变脸”
中式琴房设计方案
变被动为主动,让学生走向前台
探索ASP.NET的生命周期
基于Android Broadcast的短信安全监听系统的设计和实现
基于生命周期理论的科技型小微企业融资路径选择探析
税收筹划在企业经营管理中的应用探讨
折寿
利用RFC技术实现SAP系统接口通信