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)
blank

相关推荐

  • C语言之数组反转

    C语言之数组反转数组反转是数组常见操作。大概来写一写数组反转添加上自己的理解注释。#include<stdio.h>#defineN6intmain(){inta[N]={0,1,2,3,4,5};inti;intt;intj;//反转算法for(i=0;i<N/2;i++){t=a[i];a[i]=a[N-1-i];a[N-1-i]=t;//遍历输出,每对换一对数值就打印一次数组

  • java中import是什么意思_java中import关键字是什么意思「建议收藏」

    java中import是什么意思_java中import关键字是什么意思「建议收藏」import关键字是用来导入包的,因为实际开发中,你不可能把所有的类都放在同一个default包里面。包的作用就是给java类进行分拣,不同业务逻辑的java类放在同一个包中,比如工具包,实体包。那么,你在a包中的A类,希望调用b包中的B类,就需要导入b包。import关键字使用1、显示导入指定包下的类或者接口importjava.util.Scanner;2、写在包的声明和源文件之间packa…

  • python读取pkl文件_pkl文件是怎么训练出来的

    python读取pkl文件_pkl文件是怎么训练出来的importosimportpickledefread_pickle(work_path):data_list=[]withopen(work_path,”rb”)asf:whileTrue:try:data=pickle.load(f)data_list.append(data)

  • 函数模板参数(函数参数在哪)

    C++模板实参的省略下面列举的几种情况不能省略模板实参:1)从模板函数实参表获得的信息有矛盾之处。template<typenameT>voidfun(Tconst&a,Tconst&b);但是你调用时却是fun(250,250.4);那你就必须写成fun<int>(250,250.4);2)需要获得特定类型的返回值,而不管参数…

  • Java中有哪些集合,集合中有哪些类?

    Java中有哪些集合,集合中有哪些类?Java中所有的类都位于java.util包下,主要由两个接口派生出来,分别是Collection和Map.Collection包含了List和Set两大分支。Map是一个映射接口。Set、Map、List可以看做集合的三大类。而遍历集合的工具有Iterator和Enumeration;Arrays和Collection是操作数组集合的两个工具类。一、Java中的集合主要分为四类:1、L…

  • javascript typescript_typescript python

    javascript typescript_typescript python前言:无论在学习什么语言的时候,我们都需要明白其该怎么样去定义一个变量或者Function,那么今天我们来看看TypeScript的数据类型。文章目录:一.Ts与Js的区别二.Ts的数据![在这里插入图片描述](https://img-blog.csdnimg.cn/8904446afa764db282b731721429ebda.png)三.数据类型应用1.any类型:2.number类型:3.string类型:4.Array类型:(1).[]:(2).数组泛型:一.Ts与Js的区别众所周知:Jav

发表回复

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

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