Activity生命周期是每一个Android开发者都必须掌握的,当我们深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序,让我们的程序拥有更好的用户体验。

 

Activity生命周期一般有这几个状态:

创建:onCreate()

开始:onStart()

重启:onRestart()

运行,显示:onResume()

暂停:onPause()

停止:onStop()

销毁:onDestroy()

 

activity的生命周期

oncreate()->onstart()->onResume()->onRestart()->onPouse()->onStop()->onDestory()

 

上面图概括了android生命周期的各个环节,描述了activity从生成到销毁的过程。

onCreate(): 
当我们点击activity的时候,系统会调用activity的oncreate()方法,在这个方法中我们会初始化当前布局setContentLayout()方法。 
onStart(): 
onCreate()方法完成后,此时activity进入onStart()方法,当前activity是用户可见状态,但没有焦点,与用户不能交互,一般可在当前方法做一些动画的初始化操作。 
onResume(): 
onStart()方法完成之后,此时activity进入onResume()方法中,当前activity状态属于运行状态 (Running),可与用户进行交互。 
onPouse() 
当另外一个activity覆盖当前的acitivty时,此时当前activity会进入到onPouse()方法中,当前activity是可见的,但不能与用户交互状态。 
onStop() 
onPouse()方法完成之后,此时activity进入onStop()方法,此时activity对用户是不可见的,在系统内存紧张的情况下,有可能会被系统进行回收。所以一般在当前方法可做资源回收。 
onDestory() 
onStop()方法完成之后,此时activity进入到onDestory()方法中,结束当前activity。 
onRestart() 
onRestart()方法在用户按下home()之后,再次进入到当前activity的时候调用。调用顺序onPouse()->onStop()->onRestart()->onStart()->onResume()

 

下面来运行开一下效果分析:

定义一个常量:

private static final String TAG="activityDemo";

之后在每个方法里边输出一下方法名:

Log.i(TAG, "MainActivity===>每个方法的方法名()");

 

之后运行,执行顺序为:oncreate()——>onStart()——>onResume

如果运行后点反回退出程序:执行顺序为:onPause()——>onStop()——>onDestroy()

如果不会退出程序,而是点home键直接返回主界面(这时程序并没有销毁),执行顺序:onPause()——>onStop()

这时直接退出后,在打开程序,执行顺序为:onRestart()——>onStart()——>onResume();

 

页面跳转生命周期分析:

先在新建一个页面,之后在之前的页面是加一个点击跳转的按钮(跳转页面上一篇博客写过,这里就不写了):

当点击按钮跳转,执行顺序为:onpause()——>onStop();

当跳转过去之后在点返回键时:onRestart()——>onStart()——>onResume()

当不是跳转页面,而是点击弹框时。

把页面跳转改成弹框,只需要把跳转的页面主题改一下:

在AndroidManifest.xml中在新建的页面里边加上

android:theme="@android:style/Theme.Dialog"设置主题,Dialog弹框显示页面 

运行样式:

执行为:onPause()

当点击返回时:onResume()

 

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. android上一些方法的区别和用法的注意事项
  5. 读取android手机流量信息
  6. android实现字体闪烁动画的方法
  7. Android中dispatchDraw分析
  8. Android四大基本组件介绍与生命周期
  9. Android(安卓)MediaPlayer 常用方法介绍

随机推荐

  1. mysql删除重复行的实现方法
  2. 深入浅析Mysql联合索引最左匹配原则
  3. mac下重置mysl8.0.11密码的方法
  4. MySQL子查询操作实例详解
  5. MySQL Union合并查询数据及表别名、字段
  6. MySQL连接查询实例详解
  7. 详解MySql Date函数
  8. MySQL数据表基本操作实例详解
  9. MySQL单表查询常见操作实例总结
  10. MySQL使用集合函数进行查询操作实例详解