Activity生命周期

来源:互联网 发布:mac有线网络设置 编辑:程序博客网 时间:2024/06/05 16:10

正常情况下

onCreate()-->onStart()-->onResume()->onPause()-->onStop()-->onDestroy()

异常杀死

资源相关的系统文件发生改变导致Activity被杀死并重新创建

当系统配置发生改变后,Activity会被销毁,其onPause、onStop、onDestroy均会被调用,同时由于Activity是在异常情况下终止的,系统会调用onSaveInstanceState来保存当前Activity的状态。这个方法的调用时机是在onStop之前,它和onPause没有既定的时序关系,它既可能在onPause之前调用,也可能在onPause之后调用。需要强调的一点是,这个方法只会出现在Activity被异常终止的情况下,正常情况下系统不会回调这个方法。当Activity被重新创建后,系统会调用onRestoreInstanceState,并且把Activity销毁时onSaveInstanceState方法所保存的Bundle对象作为参数同时传递给onRestoreInstanceState和onCreate方法。因此,我们可以通过onRestoreInstanceState和onCreate方法来判断Activity是否被重建了,如果被重建了,那么我们就可以取出之前保存的数据并恢复,从时序上来说,onRestoreInstanceState的调用时机在onStart之后。onRestoreInstanceState一旦被调用,其参数Bundle savedInstanceState一定是有值的,我们不用额外地判断是否为空。onSaveInstanceState方法还有一点需要说明,那就是系统只会在Activity即将被销毁并且有机会重新显示的情况下才会去调用它。当Activity正常销毁的时候,系统不会调用onSaveInstanceState,因为被销毁的Activity不可能再次被显示。

资源内存不足导致低优先级的Activity被杀死

当系统配置发生改变后,Activity会被重新创建
如果当某项内容发生改变后,我们不想系统重新创建Activity,可以给Activity指定configChanges属性。
0 0
原创粉丝点击