Activity生命周期

news2024/11/17 0:04:13

Activity生命周期

1.Activity状态

1.基本状态

  • 运行,active。位于最前台,可以和用户交互的激活状态。
  • 暂停,pause,被透明或者Dialog覆盖,此时可见失去焦点但是不允许交互。
  • 停止,stop,被Active覆盖,失去焦点不可见
  • 销毁,destoryed,被系统回收,或者没有被启动。

2.生命周期

2.1常见的生命周期方法

  • onCreate,调用一次,被创建的时候调用,初始化View和一些数据
  • onStart,显示到前台的时候调用,用户可见
  • onResume,用户获取焦点,可以交互,此时位于栈顶
  • onPause,暂时不可交互,可见
  • onStop,不可见
  • onRestart,再次回到前台的时候被调用
  • onDestory,被系统销毁

图1 生命周期图

2.2Activity常用的事件

1.常用事件

  • 都是绑定在Activity身上已有的事件监听方法
  • onKeyDown(code,event),按下
  • onKeyUp(code,event),抬起
  • onTouchEvent(event),点击屏幕

2.系统事件的简单使用

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        System.out.println("keycode"+keyCode);
        if (keyCode==KeyEvent.KEYCODE_4){
            return  true;
        }
            return super.onKeyUp(keyCode, event);
    }

2.3Activity的启动模式

1. Android采用任务栈(Task)的方式管理Activity的实例。当启动一个应用时,Android会为之创建一个任务栈(满足先进后出的原则)。先启动的Activity压在栈底,后启动的Activity放在栈顶,通过启动模式可以控制Activity在任务栈中的加载情况。

  • 启动模式就是管理任务的一种方式

2.任务栈的数据结构

3.分类

在activity标签中的lanuchMode设置

  • standard
  • singleTop
  • singleTask
  • singleInstance

1)standard

  • Activity默认启动模式。每当新启动一个新的Activity,它就会进入任务栈,并处于栈顶的位置。对于使用standard模式的Activity,每次启动都会创建一个新的Activity实例对象

2)singleTop

  • singleTop模式:与standard类似,不同的是,当启动的Activity已经处于栈顶时,则直接使用它不创建新的实例。如果启动的Activity没有位于栈顶时,则创建一个新的实例位于栈顶。
  • 栈顶有不创建,没有就去创建

3)singleTask

  • singleTask模式:让某个Activity在当前栈中只存在一个实例。每次启动该模式的Activity时,系统首先会检查栈中是否存在该活动的实例,如果发现已经存在则直接使用该实例,并将当前Activity之上的所有的Activity出栈,如果没有发现则创建一个新的实例。
  • 栈中有不创建(回到栈顶的同时前面的全部销毁),没有就创建

4)singleInstance

singleInstance模式:无论从哪个任务栈中启动该模式的Activity,只会创建一个Activity实例,并且会使用一个全新的任务栈来装载该Activity实例。

分为以下两种情况:

1、要启动的Activity不存在,系统会先创建一个新的任务栈,再创建该Activity实例,并把该Activity加入栈顶;

2、如果要启动的Activity已经存在,无论位于哪个应用程序或者哪个任务栈,系统都会把该Activity所在的任务栈转到前台,从而使该Activity显示出来。

  • 案例介绍:singleInstance:将Activity压入一个新建的任务栈中。例如:Task栈1的情况为:A B C。C通过Intent跳转到D,而D的Launch mode为singleInstance,则将会新建一个Task栈2。此时Task栈1的情况还是为:A B C。Task栈2的情况为:D。此时屏幕界面显示D的内容,如果这时D又通过Intent跳转到D,则Task栈2中也不会新建一个D的实例,所以两个栈的情况也不会变化。而如果D跳转到C,则栈1的情况变成了:A B C C,因为C的Launch mode为standard,此时如果再按返回键,则栈1变成:A B C。也就是说现在界面还显示C的内容,不是D。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111801.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring提前加载,懒加载,bean的作用域和注入注解讲解

前言 sping知识随笔笔记;spring提前加载,懒加载,bean的作用域和注入注解讲解 这里写目录标题前言1 depends-on2 bean的作用域3 lazy-init 懒加载4 Autowrite和Resource的区别和使用1 depends-on depends-on 是提前加载,比如在实…

关于node.js版本切换nvm的命令和安装

首先是安装,第一步,搜索下方链接地址下载Releases coreybutler/nvm-windows GitHub 安装应用下载好后直接安装就可以了,或者下载一个压缩包,在下载安装之前建议先将之前下载的node版本给删除,否则会报错。 上面的操作都结束后,那么,下面就需要通过管理员的权限去查…

外汇天眼:利空美元!2023年美国经济将如履薄冰?各大银行预测整体不乐观!

高盛表示,美国经济可能避免衰退。摩根士丹利预计,美国经济在2023年只是避开了衰退,但着陆并不那么软。瑞士信贷认为,美国明年可以避免经济下滑。摩根大通警告称,明年很有可能出现经济衰退。美国银行预测2023年第一季度…

大学宿舍四位舍友皆为软测,3年后的现状~

笔者最近收到测试员好友小H的分享,临年关,他参加了一场大学舍友毕业3年后的聚会,感慨良多。 从2019年至今,这已经是毕业的第3个年头了。小H的寝室大多来自五湖四海,毕业后,能够相聚的时间也少之又少&#…

Android -- 每日一问:如何设计一个照片上传 app ?

经典回答 把自己放在一个面试官的角度,自己先实现一次这个 App ,然后自己总结一下你在这次实现中需要哪些能力、需要注意哪些事项。最后,再回过头来看,如果你是面试官,你希望面试者怎么回答才算是符合你的标准的&…

el-table 列的动态显示与隐藏

目录 业务场景 官方链接 实现效果图 使用框架 代码展示 template代码 ①、为什么要给el-table绑定【:key"reload"】? ②、为什么给每个绑定【key"Math.random()"】呢? ③、为什么列改变之后要添加【reload Math.random();…

【HarmonyOS】调测助手安装失败10内部错误

关于鸿蒙开发通过应用调测助手向watch gt 3 手表安装hap时报错。 问题背景: 鸿蒙开发,使用新建工程的helloworld 没有其他修改,生成hap包。然后通过应用调测助手向watch gt 3 手表安装hap时提示 安装失败:10.内部错误。 Sdk: a…

Shiro之授权

授权 1、角色认证 在controller层创建接口 使用shiro中的注解RequiresRoles指定能访问的角色名称 /*** 登录认证角色*/ RequiresRoles("admin") GetMapping("/userLoginRoles") ResponseBody public String userLoginRoles(){System.out.println("…

54 线程最外层异常的处理

前言 之前在 kafka 消费者客户端的一个 case 中曾经看到了这样的了一个情况 我没有配置 "group.id", 然后 kafka 客户端抛出了 InvalidGroupIdException 然后 输出的日志信息 除了类型, 其他 什么都没有, 主要是 么有堆栈信息 这里 来大致看一下 这个问题, 以及…

WooCommerce Product Feed指南 – Google Shopping和Facebook[2022]

在过去十年中,在线购物一直在增加。全球超过 85% 的人更喜欢网上购物而不是光顾实体店。 许多 WooCommerce 商店都做得非常好,销售额是大约几年前的三倍。 您是否知道您也可以立即轻松地将商店销售额翻三倍? 秘诀是什么? 好吧&…

【网络安全】浅识 SQL 注入

前言 SQL 注入(SQL Injection)是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞。主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外…

AcrGIS Pro一键出图

简介 日常工作中我们经常遇到批量出图的场景,比如对某个县下的各个乡镇分别按照其行政区范围出图、对某个流域/河流按照一定方向纵横的网格排布顺序出图等等要求,ArcGIS Pro对于上述需求提供了一个良好的解决方案——地图系列! 那么应该如何创建一个地图系列呢?ArcGIS Pro…

我不是浮躁,只是迷茫,北大毕业转行学编程

北大毕业的我选择去学习编程了!!! 没有希望的地方,就没有奋斗。于千万人之中遇见它,于千万年之中,时间的无涯的荒野里,没有早一步,也没有晚一步,刚巧赶上了,那…

9_SpringMVC_作用域传参

PageContext对象 作用域范围:当前jsp页面内有效 request对象 作用域范围:一次请求内。 作用: 解决了一次请求内的资源的数据共享问题 session对象 作用域范围:一次会话内有效。 说明:浏览器不关闭,并且后台的session不失效,在任意请求中都可以获取到同一个se…

RV1126笔记十:RTMP单路推流

若该文为原创文章,转载请注明原文出处 一、介绍 使用ffmpeg把RV1126采集到的视频和音频以RTMP方式推流到服务器,并播放。 视频为h264格式,音频为AAC格式,利用的是RV1126硬件编码,缩短时间,在局域网内测试,实现200毫秒内实时播放预览。 二、流程图 说明: RTMP推流…

Spring MVC【返回数据与请求转发和重定向】

Spring MVC【返回数据与请求转发和重定向】🍎一. 返回数据🍒1.1 返回静态页面🍒1.2 返回一个非静态页面🍒1.3 返回text/html类型页面🍒1.4 返回JSON对象🍒1.5 实现计算器功能🍒1.6 使用ajax方式…

RV1126笔记十一:RTMP多路推流

若该文为原创文章,转载请注明原文出处。 一、介绍 在前面,已经了解了单路推流的方式了,也成功的推流和接收到RTMP流,我们把单路扩展成多路,实际方法是和单路相同的,只是多增加了参数和线程数,把ffmpeg参数多复制几路,推流线程多开几个,那就实际了多路推的方式了,具…

视图便捷类(QListWidget,QTableWidget,QTreeWidget)

常见的视图便捷类: QListWidget 列表QTableWidget 表格QTreeWidget 树列表便捷类:QListWidget (继承自QListView) 构造函数: 常用函数: addItem()添加项目addItems()添加多个项目count()项目的数量currentItem()…

微内核、宏内核、内核模块、printk

文章目录一、微内核和宏内核二、内核模块三、内核模块code四、Makefile注意注:,?, : 区别五、prink查看prink打印优先级修改printk的打印优先级六、内核模块参数module_param与module_param_array宏定义的使用七、内核符号表--全局共享函数接口与变量1.…