美文网首页
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