美文网首页
Android四大组件——Activity的生命周期

Android四大组件——Activity的生命周期

作者: Samuel_Tom | 来源:发表于2018-09-01 09:57 被阅读0次

    1、正常情况下的生命周期主要涉及四个场景

    (1)Activity启动时

    onCreate():可以做一些初始化操作,比如调用setContentView加载界面布局资源    

    onStart():activity处于用户可见的状态,但是还不能和用户进行交互(后台)    

    onResume():activity处于用户可见状态,可以与用户进行交互(前台)

    (2)Activity从可见变为不可见(点击Home键时、打开另一个Activity)

    onPause():表明Activity处于用户可见,不可交互的状态(对应于onResume)    

    onStop():表明Activity处于用户不可见,不可交互的状态(如果内存紧张,Activity会被回收)

    (3)Activity从不可见变为可见(点击Home键返回主界面,再点击Launcher启动图标重新启动Activity)

    onRestart():当Activity由不可见变为可见时调用    

    onStart():用户可见,不可交互    

    onResume():用户可见,可交互

    (4)Activity退出时

    onPause()     

    onStop()    

    onDestroy():Activity被回收销毁,资源被释放

    2、异常情况下的生命周期

    (1)系统配置改变导致Activity被杀死并重新创建(横竖屏切换时Activity会被销毁并重新创建)

    由于系统配置导致Activity销毁属于异常情况下的异常情况下的销毁,系统会自动调用onSaveInstanceState()来保存销毁前的相关数据以便Activity重新创建时用于数据恢复,其中相关数据以Bundle对象存储;当Activity重新创建时,系统会把该Bundle对象传递给onRestoreInstanceState()和onCreate(),用户可以在这两个方法中获取Bundle对象进行数据恢复操作。

    (2)系统内存不足导致优先级低的Activity被杀死

    当系统内存资源不足的情况,系统会按照Activity优先级的高低杀死Activity,并会按照(1)的流程通过onSaveInstantState和onRestoreInstanceState来存储和恢复数据。

    Activity的优先级高低如下:

    1)前台Activity:正在与用于进行交互的Activity,优先级最高;

    2)可见非前台Activity:可见但无法与用户交互的Activity;比如弹出一个对话框导致Activity可见但是无法与用户交互;

    补充

    1、当系统配置发生改变时,我们可以通过指定Activity的configChanges属性使Activity不被销毁并重新创建;

    2、onSaveInstanceState()会在onStop()之前被调用;当Activity在异常情况下需要重新启动时,系统会默认保存当前Activity的视图结构,比如保存TextView的文本内容和文本选中状态、ListView的滚动位置等;

    相关文章

      网友评论

          本文标题:Android四大组件——Activity的生命周期

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