Activity创建与销毁(2)

来源:互联网 发布:微信打开转到淘宝app 编辑:程序博客网 时间:2024/04/27 15:19

异常情况下的生命周期

系统配置发生改变导致Activity被KILL

在类似旋转屏幕动作等异常情况下,Activity会被销毁后重建。

在销毁的时候onPause onStop onDestory 都会被调用,而且系统会在onStop之前调用onSaveInstanceState来保存当前的Activity,我们可以在这个方法中保存一些有用的数据。

重建之后,系统会调用onRestoreInstanceState,把之前保存的Bundle对象作为参数传递给onRestoreInstanceStateonCreate我们就可以取出之前保存的数据并恢复。

同时onSaveInstanceStateonRestoreInstanceState中,系统自动为我们恢复了了一些数据,比如视图结构,listview的滚动位置,等。。。每一个View都有这两个方法。可以查看源码。


活动被回收前 数据的保存与恢复

常见问题,活动onStop()->app process killed->onCreate(),切回上一个Activity发现由于被回收过,导致之前的数据丢失。。。

Activity中加入OnSaveInstanceState(Bundle参数)回调方法,会保证在回收前调用,可以保存数据,Bundle参数.putString(“key”,value);

然后在onCreate()中加入恢复数据方法 Bundle参数.getString(“key”);

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

  1. 前台
  2. 可见
  3. 后台
    内存不足的时候,就会从优先级别低的Activity开始杀死其进程。所以后台应该在service中运行,而尽量避免被杀死。

那么如何避免被销毁重建呢?
在AndroidMenifest.xml中activity标签内的configChanges属性中选择某些值。代表在这个时候不会重建,比如android:configChanges="orientation|screensize"
android:configChanges="locale"//系统本地位置发生了变化,一般指系统切换了语言
android:configChanges="keyboardHidden"
然后在Activity的onConfugChanged方法中去处理系统配置的变化。

0 0
原创粉丝点击