Android生命周期和数据恢复

先来一张大图吧,整个流程就是这个,后面有数据的存储

Activityçå½å¨æå¾

除了常见的生命周期外,还有onWindowFocusChanged、onSaveInstanceState、onRestoreInstanceState方法:

1、onWindowFocusChanged:在Activity窗口获得或失去较短时被调用。

2、onSaceInstanceState:调用此方法,我们可以保存一些临时数据。

 (1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用;

 (2)在用户改变屏幕防线时,此方法会被调用;

 (3)在当前Activity跳转到其他Activity或者按Home键回到主屏幕,自身退居后台时,此方法会被调用。

3、onRestoreInstanceState:我们可以重写此方法,以便可以恢复一些临时数据。

 (1)在Activity被覆盖或推举后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用;

 (2)在用户改变屏幕方向时,重建的过程中,此方法会被调用。

以下是常见的几个过程的生命周期(如何模拟后台app被杀?可以在终端用命令:adb shell am kill +  包名,或者在开发者模式中打开不保留活动选项):

1、启动Activituy:

 onCreate->onStart->onResume->onWindowFocusChanged

2、 当前Activity转到新的Activity界面或按Home键回到主屏:

 onPause->onWindowFocusChanged->onSaveInstanceState->onStop

3、后退回到此Activity或从主屏重新进入此Activity:

 onRestart->onStart->onResume->onWindowFocusChanged

4、锁屏或当前Activity被其他Activity覆盖其上:

 onPause->onSaveInstanceState->onStop->onWindowFocusChanged

5、解锁屏或当前Activity由被覆盖状态回到前台:

 onRestart->onstart->onResume->onWindowFocusChanged

6、当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户推出当前Activity:

 onCreate->onStart->onRestoreInstanceState->onResume->onWindowFocusChanged

7、用户推出当前Activity:

 onPause->onSaveInstanceState->onStop->onDestory->onCreate->onState->onRestoreInstanceState->onResume->onWindowFacusChanged

异常情况:

1、资源相关的系统配置发生该改变导致Activity被杀死并重新创建。

 比如旋转屏幕,默认情况下,如果我们的activity不做特殊处理,那么当系统配置发生改变后,activity就会被销毁并重新创建。

 为了避免这样销毁重建的过程,我们需要在AndroidMainfest.xml中对应的Activity配置:

 Android:configChanges="orientation|keyboardHidden|screenSize"

这样每次旋转方向时,只有onConfigurationChanged方法被调用,没有了销毁重建的过程。

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

 Activity按照优先级从高到低,可以分为三种:

  1、前台Activity ----正在和用户交互的Activity,优先级最高。

  2、可见但非前台Activity-----比如Activity中弹出一个对话框,导致Activity可见但是位于后台无法和用户发生交互。

  3、后台Activity----已经被暂停的Activity,比如执行了onStop.

当系统内存不足时,系统就会按照上述优先级去杀死目标Activity所在的进程,并在后续通过onSaveInstanceState和onRestoreInstanceState来恢复数据,因此,一些后台工作不适合脱离四大组件而独立运行在后台中,比较好的方法是将后台工作放在service中从而保证进程有一定的优先级,这样就不会轻易的被系统杀死了。

发布了80 篇原创文章 · 获赞 93 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_40251830/article/details/82803200