activity生命周期(这篇足够了)
摘要
做安卓开发已经4年多了,所接触的知识点也比较零散,在这里记录一下android方面的知识点,方便自己以后复习,有什么不足的,以及错误的欢迎拍砖。
activity
- activity从开始到结束的四个状态。
- activity的生命周期。
- activity的进程优先级。
activity的四个状态
- running->当前显示在屏幕的activity(位于任务栈的顶部),用户可见状态。
- poused->依旧在用户可见状态,但是界面焦点已经失去,此Activity无法与用户进行交互。
- stopped->用户看不到当前界面,也无法与用户进行交互 完全被覆盖.
- killed->当前界面被销毁,等待这系统被回收
关于activity四个状态所在的生命周期:

当前称为活动状态(Running),此activity所处于任务栈的top中,可以与用户进行交互。
Running ——>Paused 所执行Activity生命周期中的onPause()
当前称为暂停状态(Paused),该Activity已失去了焦点但仍然是可见的状态(包括部分可见)。
Paused ——>Running所执行的生命周期为:OnResume()
当前重新回到活动状态(Running),此情况用户操作home键,然后重新回到当前activity界面发生。
Paused ——>Stoped所执行的生命周期为:onStop()
该Activity被另一个Activity完全覆盖的状态,该Activity变得不可见,所以系统经常会由于内存不足而将该Activity强行结束。
Stoped——>killed所执行的生命周期为:onDestroy()
该Activity被系统销毁。当一个Activity处于暂停状态或停止状态时就随处可能进入死亡状态,因为系统可能因内存不足而强行结束该Activity。
注:还有一种情况由于系统内存不足可能在Paused状态中直接被系统杀死达到killed状态。
activity的生命周期
oncreate()->onstart()->onResume()->onRestart()->onPouse()->onStop()->onDestory()
上面图概括了android生命周期的各个环节,描述了activity从生成到销毁的过程。
注: 当AActivity切换BActivity的所执行的方法:
当AActivity切换BActivity(此activity是以dialog形式存在的)所执行的方法:
Activity中onSaveInstanceState()和onRestoreInstanceState()
onSaveInstanceState(Bundle outState):
onRestoreInstanceState(Bundle outState):
activity的进程优先级。
前台进程>可见进程>service进程>后台进程>空进程
前台进程:
1.当前进程activity正在与用户进行交互。 2.当前进程service正在与activity进行交互或者当前service调用了startForground()属于前台进程或者当前service正在执行生命周期(onCreate(),onStart(),onDestory()) 3.进程持有一个BroadcostReceiver,这个BroadcostReceiver正在执行onReceive()方法
可见进程:
1. 进程持有一个activity,这个activity不再前台,处于onPouse()状态下,当前覆盖的activity是以dialog形式存在的。 2. 进程有一个service,这个service和一个可见的Activity进行绑定。
service进程:
1.当前开启startSerice()启动一个service服务就可以认为进程是一个服务进程。
后台进程:
activity的onStop()被调用,但是onDestroy()没有调用的状态。该进程属于后台进程。
空进程:
改进程没有任何运行的数据了,且保留在内存空间,并没有被系统killed,属于空进程。该进程很容易被杀死。
参考:
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200950.html原文链接:https://javaforall.net
