关于Activity生命周期

来源:互联网 发布:mac qq五笔拼音输入法 编辑:程序博客网 时间:2024/06/05 03:27

关于Activity

做Android接触到最多的就是Activity,理解其生命周期对于编码的帮助很大:

  • 帮助简化逻辑

  • 数据传递过程清晰

  • 处理特殊需求

一个Activity表示一个可视化的用户界面,可以称之为“活动”,使用setContentView(int layoutId)(一般执行在onCreate方法里)将需要显示的UI界面加载到这个Activity里面,实现Activity与用户的交互。


1、生命过程

  • onCreate(Bundle savedInstanceState) Activity创建,Bundle对象为当前Activity对象所保存的状态,此方法在Activity生命周期内只执行一次,可理解为Activity对象的创建过程。

  • onRestart 重启Activity,恢复显示,

  • Activity从后台隐藏状态转换到前台可见状态会被执行。

  • onStart Activity已经创建完毕,即将显示,用户看不到的。

  • onResume Activity已将可以显示了,并且用户可以与当前活动开始交互。

  • onPause Activity准备进入后台,一般用来处理离开当前活动时候的事情。

  • onStop Activity进入后台。

  • onDestroy Activity被销毁,当前活动停止,此方法只会执行一次。

2、区别特点

  • onCreate一般完成正常静态设置,如创建视图、初始化控件、初始化数据、创建线程等操作。
  • onStart是在活动变为可是状态之前调用,如果是前台接下来调用onResume,否则调用onStop。
  • onResume活动与用户可交互前会调用到,其实是将一个Activity移动到栈顶。
  • onPauseonStoponStartonResume是相互对应的关系。
  • onDestroy与onCreate相对应,于Activity销毁时候调用到。

3、使用技巧

  • activity的销毁原因会有多种,如自然销毁,系统回收等等,但是onPause方法却是唯一一个必定会在进程被杀死前被调用到的方法,所以相关的保存工作在这里完成比较好。
  • onStartonResume方法在活动每次进入前台时候都会调用到,所以不需要在里面完成视图和数据的初始化,但是可以进行视图或数据的更新操作,比如数据会在下一个Activity里面改变,再回到此活动时候更新。
    另外需要注意的是只需要执行一次的操作(如启动一个线程),尽量不要放在这两个方法里面完成,尤其如果线程操作关系到c++之类的其他语言,因为c崩溃后JVM并不会检测到,只会再启动一遍,造成错误的结果。
  • onPause 最重要的是用户所做的改变应该在这里提交,需要注意的是对于下一个启动的Activity来说,当前Activity必须执行完onPause方法才会执行onResume方法,也就是说当前的Activity准备隐藏工作完成之后下一个Activity才会准备显示,所以在这个方法里面不能执行过多的操作,尤其是耗时操作需尽量避免。

4、备注示例

0 0
原创粉丝点击