美文网首页
Activity的生命周期

Activity的生命周期

作者: Lndroid | 来源:发表于2018-12-31 16:53 被阅读0次

Activity是安卓四大组件之一!

Activity的生命周期:onCreate()->onStart()->onResume->onPause()->onStop()->onDestory();

onCreate():表示Activity正在被创建,可以在此方法中进行一些初始化的操作。

onStart():表示Activity可见了,但是没有出现在前台,还无法与用户交互。

onReStart():表示Activity正在重新启动,一般情况下,activity从不可见状态到可见状态,这个方法会回调,这种情况通常是用户行为所致。比如用户按HOME键切换到桌面,然后重新打开APP或者按Back。

onResume():表示Acitivity可见并出现在前台,可以与用户交互。

onPause():表示Activity正在停止,此时可以做一些数据存储,停止动画等操作。注意不能太耗时,因为这会影响到新activity的显示,onPause必须执行完毕,新的Activity的onResume才会被调用。

onstop():表示Activity即将停止,可以做一些耗时操作,但是不能太耗时。

onDestory():表示Activity已销毁,可以做一些回收工作和资源释放

注意:activity在弹出dialog对话框的时候,activity不会回调pause。

启动一个Activity:    onCreate()->onStart()->onResume;

打开一个新的Activity或者按HOME键切换至桌面:   onPause()->onStop();

再次回到此Activity: onRestart()->onstart()->onResume;

当用户按Back键回退时:onPause()->onStop()->onDestory()。

对于整个生命周期来说,onCreate()和onDestory()是配对的,表示Activity的创建和销毁。并且只能调用一次,onStart()和onStop是配对的,表示Activity是否可见,onPause和onResume是配对的,表示Activity是否前台。

异常情况下的生命周期

1.资源相关的系统配置发生改变导致activity被杀死并重新创建

比如说当前activity处于竖屏状态,如果突然旋转屏幕,由于系统配置发生了改变,在默认情况下,activity就会被销毁并且重新创建,当然我们也可以组织系统重新创建我们的activity。

系统配置发生改变以后,activity会销毁,onPause,onStop,onDestory都会被调用,由于activity是在异常情况下终止的,系统会调用onSaveInstanceState来保存当前activity的状态,这个方法是在onStop之前,与onPause没有既定的顺序关系,由于acitivity重新创建后,系统会调用onRestoreInstanceState,并且把activity销毁时onSaveInstanceState保存的bundle对象作为参数传递给onCreate方法和onRestoreInstanceState方法,onRestoreInstanceState()在onstart方法后回调

同时,在onSaveInstanceState和onRestoreInstanceState方法中,系统会自动为我们做一下回复工作,文本框中用户输入的数据,listview滚动的位置,这些和View相关的状态系统都会默认给我们恢复。

2.资源内存不足导致优先级低的activity被杀死,activity的优先级可分为三种:

(1) 前台acitivity---正在和用户交互的activity,优先级最高

(2) 可见当非前台activity  比如activity中弹出了一个对话框,导致activity可见但是无法和用户直接交互

(3) 后台activity  已经被暂停的activity,比如执行了onStop,优先级最低

Activity的启动模式: stander,singleTop,singleTask,singleInstance

stander模式:这种模式情况下,activity默认会进入启动它的activity所属的任务栈中。

singleTop模式:栈顶复用模式,如果新的activity位于任务栈栈顶的时候,activity不会被重新创建。同时它的onNewIntent会被回调。

singleTask模式: 栈内复用模式,只要acitivity在一个栈中存在,那么多次启动此activity不会被重新创建,系统会回调onNewIntent。

singleInstance模式:单实例模式,这种模式的activity只能单独存在一个任务栈中,由于站内复用模式,后续的请求均不会创建新的activity实例.

相关文章

网友评论

      本文标题:Activity的生命周期

      本文链接:https://www.haomeiwen.com/subject/wuiheftx.html