Activity的状态即状态转换

来源:互联网 发布:wps怎么筛选多个数据 编辑:程序博客网 时间:2024/05/16 18:03

     理解Activity的生命周期很重要,关于Activity生命周期中的各种方法调用时机,网上资料很多,可以参考博文:基础总结篇之一:Activity生命周期,我也对该博文进行了转载,进行了真机测试,发现有点小差异,有兴趣的可以看一下:Activity生命周期。


     下面说一下Activity生命周期中的各种状态,即针对Activity跳转、锁屏、home键等操作对Activity状态转化的影响。

Activity在一个完整的生命周期中会有4中状态(摘自《Android 4 高级编程(第3版)》):

1、活动状态:Activity位于Activity栈的栈顶,它是可见的、具有焦点的前台Activity,这时它可以接受用户输入。
2、暂停(Pause)状态:在某些情况下,Activity是可见的,但是没有获得焦点,此时它就是暂停状态。当一个透明的或者非全屏的Activity位于该Activity之前时,就会达到这种状态,此时该Activity虽然(部分)可见,但没有获得焦点,不能接受用户的输入事件。
3、停止(stop)状态:当一个Activity不可见的时候,它就处于停止状态。
4、非活动状态:当一个Activity被终止之后,在被启动之前它就处于非活动状态,已经被Destroy掉。处于非活动状态的Activity已经从Activity栈中移除了,因此,在它们可以被重新显示和使用之前,需要被重新启动。


以下结果是我在华为P6(Android 4.2.2)真机测试后的总结,测试过程在http://blog.csdn.net/hanyingjie327/article/details/21242527中有部分描述,针对Activity跳转、锁屏、home键等操作对Activity状态转化的影响:

1、启动Activity,进入活动状态:系统会先调用onCreate()方法,然后调用onStart()方法,最后调用onResume()方法,Activity进入运行状态(活动状态)。


2、当前Activity被其他Activity覆盖其上(但该Activity仍然可见),进入暂停状态:系统会调用onPause()方法,暂停当前Activity的执行,Activity进入暂停状态。


3、当前Activity由暂停状态回到活动状态:系统会调用onResume()方法,Activity恢复到活动状态。

         例如back掉覆盖在当前Activity上面的透明或非全屏的Activity后,当前的Activity会回到活动状态。


4、当前Activity由活动状态进入停止状态:

(1)、当前Activity跳转到新的Activity界面;

(2)、按Home键回到主屏;

(3)、按锁屏键。

(4)、设备休眠。

这4中情况中,当前Activity退居后台,而且均不可见,该状态转化过程中,系统会先调用onPause()方法,然后调用onStop()方法,当前Activity进入停止状态。


5、Activity从停止状态恢复到运行状态:系统会先调用onRestart()方法,然后调用onStart()方法,最后调用onResume()方法,再次进入运行状态。
该条分别针对第4条的4种情况:
(1)、其他的Activity回退到该Activity;
(2)、按完Home键后又从主屏点击应用返回Activity;

(3)、锁屏以后,又通过解锁返回Activity;

(4)、设备休眠后,解锁返回Activity。

这3中情况中Activity状态转化一样,都是从停止状态恢复到运行状态,Activity先调用onRestart()方法,然后调用onStart()方法,最后调用onResume()方法。


6、Activity进入非活动状态,系统先调用onPause()方法,然后调用onStop()方法,最后调用onDestory()方法,结束当前Activity。此时的Activity已经从Activity栈中移除了,因此,在它们可以被重新显示和使用之前,需要被重新启动。有三种情况会使Activity进入非活动状态:

(1)、用户主动退出当前Activity:例如按Back键,或者清除内存进程(有时onDestrory()方法不一定会执行)。

(2)、当前Activity处于暂停(被覆盖)状态或者停止状态(不可见),即第2步和第4步,系统内存不足kill掉了当前的Activity。该情况是我们不可控的,处于暂停状态的Activity只有在极端情况下才会被系统主动终止。

(3)、主动调用Activity的finish()方法。


7、Activity进由非活动状态进入活动状态:

     当前Activity处于非活动状态,而后用户退回、或者主屏点击图标返回、或者解锁屏返回到当前Activity:需要重新开始生命周期,再次调用onCreate()方法、onStart()方法、onResume()方法,进入运行状态。



注意:以上是华为P6(Android 4.2.2)真机测试后的总结,模拟器或者其他Android版本中,Activity跳转、锁屏、home键等操作对Activity状态转化的影响没有经过测试,不知是否会有所差异,有兴趣的可以找个低版本的测试一下。


参考:http://blog.csdn.net/liuhe688/article/details/6733407

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 卫生间边缝漏水怎么办 老铸铁水管漏水怎么办 厕所下水道管子漏水怎么办 外墙雨水管堵了怎么办 商品房子地基下沉怎么办 楼下的管道漏水怎么办 铁水管开关漏水怎么办 排污管堵了怎么办 水龙头换不下来怎么办 全自动洗衣机水龙头漏水怎么办 供暖被停了怎么办 马桶上水慢怎么办视频 马桶水箱烂了怎么办 马桶拉屎总是堵怎么办 雨伞的伞珠掉了怎么办 雨伞的卡扣坏了怎么办 陶瓷汤勺掉马桶怎么办 下水道突然堵了怎么办 猫砂堵住下水道怎么办 洗碗下面堵了怎么办 泥沙堵了下水道怎么办 下水道有点堵了怎么办 下水道堵砂石了怎么办 水泥堵了下水道怎么办 水槽下水道堵了怎么办 厨房下水道返水怎么办 地漏堵水泥了怎么办 下水道铁丝卡了怎么办 筷子冲马桶堵塞怎么办 平房下水道堵了怎么办 洗手间下水道堵了怎么办 洗碗池堵塞了怎么办 管道头发堵住了怎么办 便池下水道堵了怎么办 下水道被土堵住怎么办 厕所卫生纸堵了怎么办 下水道主管堵了怎么办 下水道堵了水泥怎么办 树根堵满下水道怎么办 刮胡刀掉进马桶怎么办 塑料梳子掉马桶怎么办