Activity生命周期

来源:互联网 发布:老鼠仓软件 编辑:程序博客网 时间:2024/06/05 02:23

Activity作为四大核心组件之一,主要用于处理用户操作,由此可见Activity会创建一个可视化窗口,通过setContentView(View)把指定的UI资源放到由它创建窗口上


Android系统中用栈来管理Activity,当新启一个Activity时,它将被放到栈顶,之前的Activity保留在中,不在出现在前台,顶的Activity属于活动或运行状态(active or running)


先看看下面的几个方法的调用情况:

    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // onCreate:创建时调用,或者应用在暂停、停止状态下被杀死重新打开也会调用    }    @Override    protected void onStart() {        super.onStart();        // onStart:onCreate之后,在停止状态下恢复(onRestart)时调用    }    @Override    protected void onResume() {        super.onResume();        // onResume:onStart之后,在暂停状态下恢复时调用    }    @Override    protected void onPause() {        super.onPause();        // onPause:进入暂停状态,停止或销毁时调用    }    @Override    protected void onStop() {        super.onStop();        // onStop:进入停止状态,销毁时调用    }    @Override    protected void onDestroy() {        super.onDestroy();        // onDestroy:销毁时调用    }
    @Override    protected void onRestart() {        super.onRestart();        // onRestart:从停止状态恢复时调用,指向onStart    }
 
以上是Activity生命周期调用的流程,具体情况如下图


下面我们根据上图来分析:

首先看看整个生命周期,onCreate(Bundle)--->onDestroy(),Activity在onCreate创建线程,在onDestroy停止线程


确定Activity会被Kill的情况:onPause、onStop、onDestroy如上图

    1.onPause():这里引入一个焦点概念,Activity生命周里,在onResume获取窗口的焦点,在onPause失去窗口焦点,但此时Activity还属于可见状态(例如:弹窗),在设备内存极低的情况被杀死

    2.onStop():Activity完全被覆盖(例如:点击home键),此时Activity属于不可见状态,在设备内存需要被其它地方使用时,该Activity容易被杀死

    3.onDestroy():代表Activity生命的完结,主要用于释放资源,如果需要重现此Activity,必须重新走Activity生命周期


其次是可见与不可见的生命周期,onStart()--->onStop(),在此阶段,Activity不停在可见与不可见进行切换(onStart()和onStop()多次调用),同时保留显示UI的资源和数据,通常情况下,可以在onStart里注册一个IntentReceiver来监听数据的变动,在onStop里面注销


最后是前台与非前台的生命周期,onResume()--->onPause(),在此阶段,主要用于和用户进行交互




0 0
原创粉丝点击