activity的生命周期

activity的生命周期_第1张图片
20180104150230363.png

1.在activity的生命周期中存在四种状态,分别为运行、暂停、停止和不存在。每次状态转换Activity方法会发消息通知activity。
回退键会调用onDestory()方法,Home键会调用onStop()方法

  • 当处于运行状态的Activity可以用户交互
  • 当处于运行或暂停状态的Activity用户可见
  • 当处于运行、暂停、停止状态的Activity存在,有内存实例

2.任何时候只有一个Activity处于用户能交互的运行状态。通过覆盖onCreate(Bundle)方法可以预处理一些UI相关工作如:

  • 实例化组件并将其放在屏幕上
  • 引用实例化组件
  • 为组件设立监听
  • 访问外部数据模型

当第一个Activity跳转到第二个Activity时,首先执行的是第一个Activity的OnPaused方法,然后执行第二个Activity的OnCreate、OnStart、OnResumed方法,等到第二个Activity完全加载完毕(可显示状态)以后才会执行第一个Activity的Onstopped方法,当然跳转过程不会使第一个Activity被销毁。
当从第二个Activity返回到第一个Activity时,首先执行的是第二个Activity的OnPaused方法,然后调用第一个Activity的OnRestart方法、OnStart方法、OnResumed方法,最后第一个Activity已经加载完毕(可显示状态),调用第二个Activity的OnStopped、OnDestroy方法来销毁它。

设备旋转与Activity生命周期

1.横竖屏切换
2.保存数据
覆盖protected void onSaveInstanceState(Bundle outState)
除非按后退键,不然该方法将在onStop()方法被调用之前调用。在创建Activity时

@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(saveInsatnceState);
......}

我们通过调用activity超类方法,通过接受传入的bundle,取出保存在bundle的视图状态数据,activity的视图得以构建。
方法protected void onSaveInstanceState(Bundle outState)默认要求将所有activity视图将自身状态数保存到Bundle中,Bundle存储字符串和限定类型值的映射关系。覆盖该方法,将一些需要保存的数据也写入Bundle,在再次创建时也可取出。该方法会在按Back键或是系统突然崩溃时失效。

activity内存清理现状

  • 在低内存状况下,Android直接从内存清除整个应用系,连带自身的所有activity.目前Android还做不到只删除单个Activity
  • 进程存在优先级:运行>暂停>停止.当需要释放资源首先目标时低优先级的进程。用户体验至上,操作系统不会杀掉带有可见activity的进程。除非重启或死机。

你可能感兴趣的:(activity的生命周期)