Activity生命周期

Activity

  • 概念

它指的是用户可以看到的界面,界面中有一些控件,它是放在res/layout下面,是xml文件来实现的。启动activity时需要在配置文件中注册。

Activity的生命周期

  • oncreate
    [Android入门- 关于Activity下的onCreate方法]
    activity创建的时候调用。
    这里面还以Bundle形式提供对以前存储的任何状态进行访问。
    整个生命周期只会调用一次而且是 最先开始的。
    一般做初始化操作。
  • onstart
    屏幕上对用户可见时调用,启动activity,使界面可见。
  • onresume
    开始与用户交互时调用。
    恢复activity,使界面可操作
  • onpause
    可见保存当前数据,类似于对话框的时候调用。
    被暂停时保存当前游戏信息,界面可见不可操作
  • onstop
    界面不可见,不可操作
  • ondestroy
    activity完全移除时调用
  • onrestart
  • onSaveInstanceState
    activity即将移除栈顶保留UI状态时调用
  • onRestoreInstanceState 用来恢复UI状态

三个activity的跳转

1)创建三个activity分别是MainActivity,Main2Activity,Main3Activity;
2)写出每个activity的生命周期,并输出相应的类名和方法名
3)打印结果:

  • 当MainActivity启动的时候
 main onCreate
   main onStart
   main onResume
  • 当MainActivity跳转到Main2Activity的时候
    onResume() 的注释中,建议是在onResume()中打开独占设备(比如相机),与onResume()对应的是onPause(),关闭相机的操作也应该在此方法中被调用;否则,考虑一下如下场景:

    如果MainActivity打开了相机,我们点击某按钮要跳转到Main2Activity中,Main2Activity也想打开相机;假设MainActivity的onPause() 在 Main2Activity启动后再被调用,
    那Main2Activity根本就无法再正常启动相机。
    摘自:[Activity的生命周期]

      main onPause
      main2 onCreate
      main2 onStart
      main2 onResume
      main onStop
  • Main2Activity回退到MainActivity的时候
 main2 onPause
   main onRestart
   main onStart
   main onResume
   main2 onStop
   main2 onDestroy
  • 当Main2Activity跳转到Main3Activity的时候
    为什么main2先调用onpause呢?有一种情况就是如果先调用main2 onPause,main2 onStop。那么当main2跳转到main3 的过程中main3打不开了,那么界面就是黑屏,严重影响用户体验。如果是下面的情况就不会出现黑屏。
 main2 onPause
   main3 onCreate
   main3 onStart
   main3 onResume
   main2 onStop
  • 当Main3Activity跳转到MainActivity的时候
  main3 onPause
    main onCreate
    main onStart
    main onResume
    main3 onStop

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