全栈工程师开发手册 (作者:栾鹏)
安卓教程全解

每一个Activity的状态是由它在Activity栈中所处的位置所决定的, Activity其是当前所有正在运行的Activity的后进先出的集合。 当一个新的Activity启动时 , 它就变为Activity 状态, 并被移动到栈顶 。 如果用户使用Back(返回)按钮返回到了刚才的Activity, 或者前台Activity被关闭了, 那么栈中的下一个Activity 就会移动到栈顶 ,变为活动状态。

这里进行以下操作演示窗口的生命周期:

1、启动activity1,点击activity1中的控件进入activity2,

2、点击手机home键,切换到手机主界面。

3、进入已经打开的activity2

4、点击返回键,关闭activity2,返回到activity1。

通过以上几步,了解窗口的onCreate、onRestoreInstanceState、onRestart、onStart、onResume、onSaveInstanceState、onPause、onStop、onDestroy各阶段的执行触发点。

activity2的窗口代码为

public class Activity2 extends Activity{  //完整生存期开始时调用@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);   //调用基类方法setContentView(R.layout.activity2);  //setContentView可以通过扩展布局资源来对用户界面进行布局Log.v("生命周期", "完整生存期开始");}//在onCreate方法完成后调用,用户恢复UI状态@Overridepublic void onRestoreInstanceState(Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);//从savedInstanceState恢复UI状态//这个bundle也被传递给onCreate.//自activity上次可见之后,只有当系统终止了该activity时,才会被调用Log.v("生命周期", "恢复UI状态");}//在随后的activity进程的可见生存期之前调用@Overridepublic void onRestart(){super.onRestart();// 加装载改变,知道activity在此进程中已经可见Log.v("生命周期", "重启");}//在可见生存期(可见不一定聚焦)的开始时调用@Overridepublic void onStart(){super.onStart();//既然activity可见,就应用任何要求的UI ChangeLog.v("生命周期", "启动");}//在activity状态生存期(前台聚焦期)开始时调用@Overridepublic void onResume(){super.onResume();//恢复activity需要,但是当它处于不活动状态时被挂起的暂停的UI更新、线程或进程//在activity状态生命周期结束的时候调用,用来保存UI状态的改变Log.v("生命周期", "恢复");}// 把UI状态改变保存到savedInstanceState@Overridepublic void onSaveInstanceState(Bundle savedInstanceState) {//如果进程在运行时被终止或被重启,那么这个Bundle会保存UI状态,并将被传递给onCreate和onRestoreInstanceState用来恢复UI//onPause前会调用此函数super.onSaveInstanceState(savedInstanceState);Log.v("生命周期", "保存UI状态");}// 在activity状态生存期(前台聚焦期)结束时调用@Overridepublic void onPause(){// 挂起不需要更新的UI更新、线程或者cpu密集的进程//当activity不是前台的活动状态的activity时super.onPause();Log.v("生命周期", "暂停");}//在可见生存期(可见不一定聚焦)结束时调用@Overridepublic void onStop(){// 挂起不需要的UI更新、线程或处理(传感器监听器、GPS,定时器、service)//当activity不可见时,保存所有的编辑或者状态改变,因为在调用这个方法后,进程可能会被禁止super.onStop();Log.v("生命周期", "停止");}//在完整生存期结束时调用@Overridepublic void onDestroy(){// 清理所有的资源,包括结束线程、关闭数据库连接等super.onDestroy();Log.v("生命周期", "销毁");}}

activity1的窗口函数为

public class Activity1 extends Activity{  @Override  protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);   setContentView(R.layout.activity1); //点击控件,切换窗口TextView tv = (TextView)findViewById(R.id.activity1_text1);tv.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {tosub();}});}//切换到窗口2public void tosub() {Intent myintent = new Intent();myintent.setClass(Activity1.this,Activity2.class);startActivity(myintent);  //启动新页面}
}

运行打印输出如下:

1、从activity1进入activity2,依次启动了onCreate、onStart、onResume函数

2、点击键盘后面键,使app进入后台,依次启动了onPause、onSaveInstanceState、onStop

3、从手机home界面重新进入已打卡的app,依次已启动了onRestart、onStart、onResume

在activity2窗口中点击物理返回键,关闭activity2,依次启动了onPause、onStop、onDestroy

安卓activity生存周期的onCreate、onRestoreInstanceState、onRestart、onStart、onResume、onPause、onStop、onDestroy相关推荐

  1. onCreate onStart onResume onStop onPause onDestroy onRestart onWindowFocusChanged

    一.函数调用情形 1.启动游戏 onCreate onStart onResume onWindowFocusChanged 2.锁屏(已启动游戏) onPause onStop onWindowFo ...

  2. 安卓Activity的生命周期函数详解

    首先上个官图: http://developer.android.com/reference/android/app/Activity.html 记住核心方法:onStart().onStop() o ...

  3. 安卓Activity生命周期相关

    安卓Activity生命周期相关 activity作为安卓四大组件之一,是我们在开发中使用的最频繁的组件之一. 在这里就个人所了解的一些东西,和大家分享一下下.有错误之处,多多指正. 典型生命周期 首 ...

  4. Activity生命周期 onCreate onResume onStop onPause

    Android应用开发提高系列(6)--Activity生命周期 onCreate 和 onResume 在程序启动时候都会启动, 所有有些需要在onCreate onResume中都要实现的功能,之 ...

  5. 解析Activity中的onCreate方法

    我们在写一个自己的Activity的时候需要注意: 1.都必须extends Activity(或者其子类): 2.必须在方法onCreate中存在一条这样的语句:super.onCreate(也就是 ...

  6. onCreate onRestoreInstanceState onSaveInstanceState

    1.在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有种机制,能保存当时的状态,这就是savedInsta ...

  7. android oncreate调用,Android app启动activity并调用onCreate()方法时都默默地干了什么?...

    在AndroidManifest.xml文件中的元素中有这么两句: 当写好的应用发布到手机上之后,当双击"APP"应用的图标时,系统会将这个点击时间包装成一个Intent,该Int ...

  8. 安卓activity的启动流程

    文章目录 前言 一.概述 二. 启动流程 2.1 Activity.startActivity 2.2 startActivityForResult 2.3 execStartActivity 2.4 ...

  9. android 10闪退如何解决,安卓Activity启动在10.0下闪退

    锐英源精品开源,禁止转载和任何形式的非法内容使用,违者必究 安卓Activity启动在10.0下闪退 背景 近期开发的安卓App在数据量大时,安卓10.0下启动Activity时闪退,安卓8.0下不闪 ...

最新文章

  1. android:configChanges=keyboard|keyboardHidden|orientation|screenSize
  2. epson机器人编程 范例_2019年机器人盘点(IREX篇)
  3. 开源mindmap_Java开发人员访谈的MindMap
  4. HTTPS客户端的java实现
  5. spingboot视图层实例(JSP+Freemaker)以及自定义配置读取
  6. Windows核心编程_inlineHook
  7. 拓端tecdat|红圈律所微信公众号图文数据报告
  8. R语言安装包的几种方法
  9. iOS:特殊符号大全
  10. 今天开始研究小米便签的开源代码
  11. 自动控制原理思维导图
  12. 碱性溶液中HER动力学分析
  13. 大数据算法工程师知识点大全
  14. rust自动售卖机英文_中英文设备销售合同.doc
  15. PHP+ajaxfileupload 实现用户头像上传
  16. GBase 8a MPP Cluster 产品权限管理:回收权限
  17. 在win10上如果使用slickedit + mingw编译代码和debug调试
  18. html 绘制体温单,使用zrender.js绘制体温单效果
  19. 大数据Hadoop底层技术和原理
  20. Android 11.0 锁屏页面时钟显示样式

热门文章

  1. 微信终于良心一回,更新了语音识别功能可识别粤语,广东人有福了
  2. 语音识别软件、语音识别平台和语音识别技术
  3. “语音识别”+“视觉识别” - AI将引爆智能硬件市场 科技大佬们是这么认为的?...
  4. 真正的mybatiesPlus一键生成模板(根据对象增删改查分页的controller完善)详
  5. 运筹学常考知识点总结一
  6. vue element-UI的树形结构,父级关联,返回数据反选的问题
  7. 【数据结构和算法笔记】:图的储存方式(邻接矩阵,邻接表)
  8. HEVC学习 —— HM的使用
  9. mysql数据库函数详解_MySQL数据库之字符函数详解
  10. 【HDOJ6955】Xor sum(异或前缀和,01字典树)