快速掌握activity的生命周期

关于Activity的生命周期 Activity是一个很重要、很复杂的组件,他的启动不像我们平时直接new一个对象就完事了,他需要经历一系列的初始化。例如"刚创建状态",“后台状态”,“可见状态”等等。当我们在界面之间进行切换的时候,activity也会在多种状态之间进行切换,例如可见或者不可见状态、前台或者后台状态。当Activity在不同的状态之间切换时,会回调不同的生命周期方法。我们可以重写这一些方法,当进入不同的状态的时候,执行对应的逻辑。生命周期的一个重要作用就是让activity在不同状态之间切换的时候,可以执行对应的逻辑。 阅读详情

    activity的生命周期不管是在面试还是在工作中我们都会经常遇到,这当然也是非常基础的,基础也很重要哦,学会activity的生命周期对我们以后开发更健壮的程序会有很大帮助。下面来看一下Activity生命周期图:

 

        为了便于理解,我简单的写了一个Demo,不明白Activity周期的朋友们,可以亲手实践一下,大家按照我的步骤来。

       第一步:新建一个Android工程,我这里命名为MainActivity.再创建一个OtherActivity继承activity。

[java]  view plain copy
  1. public class MainActivity extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.         System.out.println("MainActivity:----------------onCreate--");  
  8.         Button button=(Button) this.findViewById(R.id.button);  
  9.         button.setOnClickListener(new View.OnClickListener() {  
  10.               
  11.             public void onClick(View v) {  
  12.                 // TODO Auto-generated method stub  
  13.                 Intent intent=new Intent(MainActivity.this,OtherActivity.class);  
  14.                 startActivity(intent);  
  15.             }  
  16.         });  
  17.  }  
  18.       
  19.     @Override  
  20.     protected void onStart() {  
  21.         super.onStart();  
  22.         // The activity is about to become visible.  
  23.         System.out.println("MainActivity:----------------onStart--");  
  24.     }  
  25.     @Override  
  26.     protected void onResume() {  
  27.         super.onResume();  
  28.         // The activity has become visible (it is now "resumed").  
  29.         System.out.println("MainActivity:----------------onResume--");  
  30.     }  
  31.     @Override  
  32.     protected void onPause() {  
  33.         super.onPause();  
  34.         // Another activity is taking focus (this activity is about to be "paused").  
  35.         System.out.println("MainActivity:----------------onPause--");  
  36.     }  
  37.     @Override  
  38.     protected void onStop() {  
  39.         super.onStop();  
  40.         // The activity is no longer visible (it is now "stopped")  
  41.         System.out.println("MainActivity:----------------onStop--");  
  42.     }  
  43.     @Override  
  44.     protected void onDestroy() {  
  45.         super.onDestroy();  
  46.         // The activity is about to be destroyed.  
  47.         System.out.println("MainActivity:----------------onDestroy--");  
  48.     }  
  49.   
  50. }  
[java]  view plain copy
  1. public class OtherActivity extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.other);  
  7.         System.out.println("OtherActivity:----------------onCreate--");  
  8.     }  
  9.       
  10.     @Override  
  11.     protected void onStart() {  
  12.         super.onStart();  
  13.         // The activity is about to become visible.  
  14.         System.out.println("OtherActivity:----------------onStart--");  
  15.     }  
  16.     @Override  
  17.     protected void onResume() {  
  18.         super.onResume();  
  19.         // The activity has become visible (it is now "resumed").  
  20.         System.out.println("OtherActivity:----------------onResume--");  
  21.     }  
  22.     @Override  
  23.     protected void onPause() {  
  24.         super.onPause();  
  25.         // Another activity is taking focus (this activity is about to be "paused").  
  26.         System.out.println("OtherActivity:----------------onPause--");  
  27.     }  
  28.     @Override  
  29.     protected void onStop() {  
  30.         super.onStop();  
  31.         // The activity is no longer visible (it is now "stopped")  
  32.         System.out.println("OtherActivity:----------------onStop--");  
  33.     }  
  34.     @Override  
  35.     protected void onDestroy() {  
  36.         super.onDestroy();  
  37.         // The activity is about to be destroyed.  
  38.         System.out.println("OtherActivity:----------------onDestroy--");  
  39.     }  
  40.   
  41. }  

第三步:运行上述工程,效果图如下(没什么特别的):


 核心在Logcat视窗里,我们打开应用时先后执行了onCreate()->onStart()->onResume三个方法,看一下LogCat视窗如下:


点击go按钮:


   一定跳转到了 另一个activity界面,下面让我们看看logcat:

当点击go按钮后首先执行mainActivity的onPause  然后依次执行otherActivity的 onCreate()     onStart()   onResume()方法,当整个屏幕被另一个activity完全遮挡住了 调用mainActivity的onStop方法.

接下来点击back按钮:

这一次先是调用了otherActivity的onPuse方法,失去焦点,然后调用mainActivity的onStart    onResume   接着就是otherActivity的停止,销毁。

    从上面可以看出onCreate方法只调用一次,当一个activity失去焦点时,也就是不在最前端时调用onPause方法, 当整个activity不可见时,也就是完全被另一个activity覆盖时,会调用onStop方法。

下面再让我们看下上面的Activity生命周期图是不是就容易理解了,当失去焦点时调用onPause方法,重新获得焦点调用OnResume方法  这两个方法是相对的。完全被覆盖调用onStop方法,返回前端调用onStart方法。

    然后在点击home键验证一下:

     OK!

Android第一行代码——快速入门 Kotlin 编程(3.4 Activity 的生命周期) 那么想象以下场景: 应用中有一个 Activity A ,用户在 Activity A 的基础上启动了 Activity B ,Activity A 就进入了 停止状态,这个时候由于系统内存不足,将 Activity A 回收掉了,然后用户按下 Back 键返回 Activity A ,会出现什么情况呢?我们每启动一个新的 Activity ,就会覆盖在原 Activity 之上,然后点击 Back 键会销毁最上面的 Activity ,下面的 一个 Activity 就会重新显示出来。 阅读详情

相关推荐

2-6-1-1 QNX编程入门之进程和线程(一)

文章围绕进程和线程展开介绍。先是将进程类比为房子,线程类比为居住者,阐述其基本概念,如进程占用内存,线程可共享内存。接着讲解同步相关内容,介绍了互斥,线程通过互斥锁来控制对特定资源的访问,像使用浴室一样。还提到优先级,线程按优先级和等待时长来决定获取资源顺序。此外,说明了信号量,以厨房为例,区分计数为 1 和大于 1 的信号情况,且指出信号量可当互斥锁用,但互斥锁是特殊用途信号量,二者存在区别,最后提及后续会介绍其他同步机制。

星原飞火的博客 1323

activity生命周期(这篇足够了)

activity生命周期(这篇足够了) 摘要 做安卓开发已经4年多了,所接触的知识点也比较零散,在这里记录一下android方面的知识点,方便自己以后复习,有什么不足的,以及错误的欢迎拍砖。 activity activity从开始到结束的四个状态。 activity的生命周期。 activity的进程优先级。 activity的四个状态 关于activity的...

android_Mr_夏 14万+

【MediaPipe实战】从零构建实时人脸关键点检测与表情分析系统

本文详细介绍了如何使用MediaPipe框架从零构建实时人脸关键点检测与表情分析系统。通过Python代码实现,系统能够精准检测468个3D人脸关键点,并实时分析用户表情,适用于智能交互应用。文章包含环境配置、核心实现、可视化技巧及性能优化等实战内容,帮助开发者快速掌握深度学习在计算机视觉中的应用。

weixin_30836759的博客 73

Activity生命周期

Activity生命周期 Activity的生命周期对于Android开发者来说是最熟悉不过的东西了,回过头看安卓基础总结一下看的内容 Activity常用的生命周期有以下七个,onCreate、onRestart、onStart、onResume、onPause、onStop、onDestroy 常用生命周期 方法名 简介 onCreate 表示Activity正在被创建,这也是...

睡客的博客 2万+

Windows平台无人机仿真:从零搭建SITL环境与QGC联调

本文详细指导了在Windows平台上从零搭建无人机软件在环(SITL)仿真环境,并与QGroundControl(QGC)进行联调的完整流程。通过使用Cygwin工具链,开发者可以在没有实体硬件的情况下,模拟运行ArduPilot飞控,并通过MAVLink协议连接QGC地面站进行全功能测试,为无人机软件开发提供了一个安全、经济的虚拟沙盒环境。

weixin_29239279的博客 408

nnU-Net v2实战:从零开始配置环境与训练自定义医学影像数据集

本文详细介绍了nnU-Net v2在医学影像分割中的实战应用,从环境配置到自定义数据集训练的全流程。重点讲解了Python 3.9+环境搭建、PyTorch安装技巧、医学影像数据预处理规范,以及五折交叉验证训练方法,帮助开发者快速掌握这一先进的医学影像分析工具。

weixin_28718487的博客 352

【Android Activity】Activity的生命周期

onCreate:表示Activity正在被创建。生命周期的第一个方法,当打开一个activity时首先回调这个方法。在这个方法中一般做一些初始化工作,例如加载界面布局资源(setContentView)、数据初始化(findviewbyid)onRestart: 表示Activity正在被重新启动。当前activity从不可见变为可见状态时这个方法就会回调。

dev晴天的博客 1万+

篮球比赛24秒计时器改造指南:用Multisim实现可调式倒计时系统

本文详细介绍了如何使用Multisim软件改造篮球比赛24秒计时器,实现可调式倒计时系统。从脉冲信号发生器到声光报警模块,提供了完整的电路设计方案和调试技巧,帮助开发者快速掌握数字电路设计的核心原理,提升体育电子设备开发效率。

wood5的博客 211

Activity的生命周期

一、典型情况下的生命周期 4种活动状态(每个活动在其生命周期中最多可能有4种状态): 运行状态:活动位于返回栈栈顶时,即在前台可见可交互。 暂停状态:活动不再处于栈顶位置但仍然可见。 停止状态:活动不再处于栈顶位置但完全不可见 销毁状态:活动从返回栈移除时。 在正常情况下,Activity会经历如下生命周期: onCreate():表示Activity正在被创建,是在活动第一次被创建的时候调用。在这个方法中可以完成活动的初始化操作,比如加载布局,绑定事件等等。 onRestart():表示Activity

*孤兰歆 1903

UE5 Niagara基础知识讲解

在UE5版本中,Niagara粒子系统引入了许多可添加的模块,分别用于控制发射器的生成和更新、粒子的生成和更新以及渲染效果。本文采用虚幻5.2.1版本,以图文方式对Niagara基础知识进行讲解。

一碗清深的博客 2469

ESP8266开发之旅 基础篇① 走进ESP8266的世界

    欢迎大家来到ESP8266的世界,从现在开始,笔者将带领大家慢慢揭开ESP8266神秘的面纱。 1. 简介     从笔者的角度来说,ESP8266这个词可以理解为ESP8266EX芯片(当然,后面也有可能出现了其他芯片,这里首推ESP8266EX)以及依赖ESP8266EX芯片开发的系列模组的简称。     ESP8266EX是由乐鑫信息科技公司(Espressif)出品的一款应用于物联...

单片机菜鸟哥的博客 15万+

Android 快速掌握Activity生命周期

一、描述上图是Activity所有的生命周期二、场景下面简单列举下 不同场景Acitvity的生命周期是如何切换 的1、启动Activity onCreate() onStart() onResume()2、跳转到其他Activity,或者按Home键 onSaveInstanceState() onPause() onStop()3、从后台回到前台 onRestart() onSt

JackLittlePig的博客 542

VisionPro 机器视觉案例 之 硬币识别

CogPMAlignTool模板匹配工具 掩模

机器视觉李小白的博客 1892

快速理解 activity生命周期

activity生命周期 启动一个activity 的时候  onCreate --->onStart --> onResume 此时activity在界面上可以看到 用intent启动另一个activity  onPause-->new_onCreate-->new_onStart -->new_onResume -->onStop 可见 当另一个activity启

svenWang_的专栏 676

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Activity生命周期 快速复习篇

一、 基本的生命周期流程 onCreate() -> onStart() -> onResume() -> onPause()-> onStop-> onDestroy() 二、启动FirstActivity(A),然后点击跳转到SecondActivity(B)所走的生命周期流程 onCreate(A)->onStart(A)->onResume(A)-onPause(A)->onCreate(B)->onStart(B)->onResume(

李岳锋的专栏 276

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Activity快速转换为Diglog,面试题bug的生命周期

判断程序是否在前台运行 字符串非空判断 是否为当前界面 Android Studio在SVN上创建分支 其他内容不变,只需要修改AndroidManifest.xml 中Activity注册是添加android:theme="@android:style/Theme.Holo.Dialog" 即可 <activity android:name=".activity.LoginActivity" android:configChanges=“keyboard|keyboardHidden|screen

m0_64319298的博客 205

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

三张图让你快速明白activity与fragment生命周期的异同点

三张图让你快速明白activity与fragment生命周期的异同点

Ac_Rambler的博客专栏 2263
上一篇: MySql远程连接不支持解决方案
下一篇: activity间的传值大全---日后完善
webrobot
博客等级 码龄23年 111粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值