android生命周期有几种状态_两个activity跳转生命周期

android生命周期有几种状态_两个activity跳转生命周期Androidactivity生命周期(一)转载请注明出处:http://blog.csdn.net/chenlinfeng772885775/article/details/53672919Activity是Android中一块非常重要的部分,负责了和用户的交互,是用户能直接体验到的部分,我们只有了解了Activity的生命周期,才能更好的在各种情况下使用他。首先,他的生命周期大概可以用下

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Android activity 生命周期(一)

转载请注明出处:http://blog.csdn.net/chenlinfeng772885775/article/details/53672919

Activity是Android中一块非常重要的部分,负责了和用户的交互,是用户能直接体验到的部分,我们只有了解了Activity的生命周期,才能更好的在各种情况下使用他。

首先,他的生命周期大概可以用下面两个图来概括:

activity生命周期

Activity生命周期

图片选自Android官方材料

其实两个图片是大同小异的,上图侧重于过程,在什么情况会触发什么方法都有标注出来。

接下来按照普通的生命周期顺序来逐个分析。

首先是onCreate()。他在Activity刚启动的时候调用,在一个完整的生命周期中只出现一次,常用来做一些启动逻辑,比如设置交互界面,初始化类变量等等。在这个方法中海油一个savedInstanceState 参数,用于保存Activity的一些数据,避免Activity被异常杀死时重要数据丢失。这个在后面会提到。

紧接着这个方法的是onStart()。他在Activity从hidden状态唤醒时经由onRestart()调用,可以根据一些具体逻辑在这里进行相关处理。

然后是onResume()。执行到这里的时候Activity已经是在前台可见了,并可以和用户交互了。这里一般放一些在onPause()中释放的资源的初始化操作。

当用户界面仍有部分可见但是已经失去焦点的时候,将会调用onPause()。我们应该在这里停止相关操作,并保存用户信息,释放一些不需要的资源。当焦点重新回到该Activity时会调用onResume()。

当界面不可见时,将会调用onStop()。在这里我们可以执行更复杂,cpu操作更多的关闭操作,释放资源。此时如果界面重新返回前台,会调用onRestart(),onStart()….

最后Activity会调用onDestroy()销毁Activity。因为onStop()已经可以释放大多数的资源,最后在这里释放剩余的东西即可。要记得后台线程等资源要及时释放。

到这里一个正常的Activity流程就走完了,后面几个方法都提到了释放资源,可能大家会奇怪他们的区别,其实对照流程图就明白了,每个方法所能释放的资源跟他们在当时的状态被重新唤醒时回到哪一个步骤是相关的,要根据具体的业务流程来判断。

activity有正常的生命周期就有异常的生命周期。异常的生命周期通常是activity被系统回收或者设备的Configuration变化(常见的有横竖屏切换)。

异常生命周期和正常的周期相比他多了两个onSaveInstanceState()和onRestoreInstanceState()。大致周期为onCreate,onstart,onResume,onPause,onSaveInstanceState,onStop,onDestroy,onCreate,onStart,onRestoreInstanceState,onResume.onSaveInstanceState()可以保存这个activity的相关数据,而在onRestoreInstanceState()可以恢复那些数据。其实在onCreate()中也有saveInstance参数,区别是onRestoreInstanceState()被调用的bundle肯定不为空,而onCreate()中的bundle有可能为空(比如当activity是正常启动的时候 )。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170693.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • JS常见算法小总结

    JS常见算法小总结今天与大家一起来测试一下常用算法的性能解析:首先我们创建一个含有十万个数组的数组用来测试:letarray=[];for(leti=0;i<100000;i++){ array.push(i)}接下来我们一起分析各个算法的性能:首先来测试冒泡排序:functionbubbleSort(arr){ for(leti=0;i<a…

  • 老板让只懂Java基本语法的我,基于AQS实现一个锁

    老板让只懂Java基本语法的我,基于AQS实现一个锁

    2020年11月20日
  • VMM传记_默克尔传

    VMM传记_默克尔传最近看了三篇有关于VMM的文章,分别是《VirtualMachineMonitors》、《VirtualMachineMonitors:CurrentTechnologyandFutureTrends》和《AnUpdatedPerformanceComparisonofVirtualMachinesandLinuxContainers》,在这里简要说下本人的读后…

  • docker容器的启动(docker容器启动时间)

    在使用-d参数时,容器启动后会进入后台,用户无法看到容器中的信息,也无法进行操作。这个时候如果需要进入容器进行操作,有多种方法,包括使用官方的attach或exec命令,以及第三方的nsenter工具等。1、attach命令attach命令是Docker自带的命令,命令格式为:dockerattach[–detach-keys[=[]]][–no-stdin][–sig-prox

  • vue基础(学习官方文档)

    vue基础(学习官方文档)基础介绍是什么是一套用于构建用户界面的渐进式框架声明式渲染vue实例一个Vue应用由一个通过newVue创建的根Vue实例,以及可选的嵌套的、可复用的组件树组成。所有的

  • 一文看懂TVS二极管SM8S30A

    一文看懂TVS二极管SM8S30A一文读懂TVS二极管SM8S系列,汽车抛负载防护器件随着汽车行业的大力发展,智能化、数字网络化、总线化以及节能环保成为了汽车发展的方向,然而,无论朝着哪种方向发展,汽车运用的基础电子保护防护元器件作用不容忽视,不可替代。如今,汽车电路保护的概念,早已不在局限于汽车保险丝,从仪表盘到车灯,从动力总成系统到高级驾驶辅助,个性化驾驶习惯和不确定的工作环境,都需要更高级、先进的保护措施为汽车保驾护航。电…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号