activity生命周期(activity生命周期三种状态)
最近复习了Activity的生命周期,查阅了相关书籍和官方文档,收获颇多。我对之前的认知有了很大的提升,在这里和大家分享一下。
Activity相当于一个servlet,我们的Activity就在这个容器里,创建实例、初始化和销毁实例的所有过程都由容器调用,也叫“Don & 39;不要叫我,我& # 39;会给你打电话的。”机制。
让我们看看这个经典的生命周期流程图:
OnCreate:此方法将在创建活动时自动运行。这个方法做一些初始化动作,比如创建视图,设置数据列表等。这个方法提供了一个Bundle类型的变量,它包含这个活动以前的状态信息,前提是这个信息以前已经存储过。执行此方法后,执行onStart方法;如果将finish方法添加到onCreate方法中,onCreate接下来将运行onDestroy方法
onRestart:当活动从onStop状态唤醒时,会使用onRestart方法,优先于onStart再次运行,onStart在OnRestart之后运行。如果将finish语句添加到onRestart方法中,您将继续运行onStart和后续的state方法,直到onDestroy完成
onStart:活动对用户可见时调用OnStart,onResume将在活动显示在前台时运行。当活动在前台显示之前被隐藏(停止)时,OnStop将运行。例如,如果在onStart方法中使用finish,onStart-ondestroy将在onStart之后直接运行。
onResume:当活动开始与用户交互时,将调用OnResume,该活动位于用户操作的活动栈的顶部。在一些操作之后,onPause在方法执行之后执行
OnPause:当一个活动运行到onResume方法时,无论该活动是被销毁、挂起还是停止,都将调用该方法。在此方法之后,它可能是onResume或onStop。如果一个新的活动-B没有完全覆盖这个活动-A在这个活动-A中被打开,那么活动-A将被暂停。当activity-B退出时,Activity-A直接在onResume上运行(前提是onPause方法完成,否则onResume方法直到onPause方法完成才会运行,所以这个方法不建议CPU密集型操作)。如果您需要退出活动-A,下一个将在顶部执行。OnPause用于提交未保存和已更改的持久数据,并停止动画和其他消耗CPU的事件(如广播接收器、传感器(如GPS)或耗电资源),以便更好地运行新活动
OnStop:当此活动完全不可见时,将调用onStop方法,因为另一个活动将调用onResume并覆盖此活动。下面三种情况会让这个活动调用onStop方法,第一种是执行一个新的活动,第二种是把一个已有的活动切换到前面,第三种是要销毁这个活动。如果活动被用户召回,将调用onRestart方法;如果要销毁此活动,请调用onDestroy方法
OnDestroy:这个方法会在活动被销毁之前被调用,例如发生以下情况:活动调用finish方法结束活动,或者系统为了节省空间而临时销毁活动,可以通过isFinishing方法来判断