11、横竖屏切换+12、任务和栈+13、activity启动模式

本文详细探讨了Android应用中Activity在横竖屏切换时的生命周期问题,以及如何通过设置清单文件来避免重置。接着讲解了任务(Task)和栈的概念,介绍如何使用adb命令查看任务栈信息。最后,深入解析了Activity的四种启动模式:standard、singleTop、singleTask和singleInstance,分析了它们的应用场景和效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

11、横竖屏切换(横竖屏方向改变带来的问题)

问题:当横竖屏切换时,会导致生命周期重置,这在游戏设计中是不能被理解的,所以针对这种问题我们可以有2种方法解决:
1、直接在清单文件中指定屏幕的方向

android:screenOrientation=”landscape” | portrait

这里写图片描述

2、或在清单文件通过配置内容随着方向改变而改变,但是生命周期方法不会再重新调用

android:configChanges=”keyboardHidden|screenSize|orientation”

这里写图片描述

12、任务和栈

adb shell dumpsys activity 使用命令查看activity启动任务栈的详细信息
* Task – 任务

一个运用程序里面可以包含多个界面,每一个界面都是来设计显示界面,并且与用户进行交互.没一个界面都是一个任务.


  • Stack – 栈

一种数据格式,遵循后进先出. 队列(queue)也是

13、activity启动模式

设计activity的启动模式有2中方法:

第一种是在清单文件设计:
这里写图片描述

第2中方法是在启动界面是设计:

启动模式的分类(四钟):

  • standard - 默认的启动模式

启动多少次界面,就会有多少个实例被压到栈中。

  • singleTop - 单一顶部模式

只要当前启动的activity,实例位于栈顶,那么将不会继续创建该界面的实例,只要不是位于栈顶,那么与默认的启动模式一样。

场景: 短信编写界面,用于去回避一些奇怪的现象。

  • singleTask - 单一任务栈

如果启动的任务在栈中已经存在实例,那么将复用以前的实例对象,并且把该实例与栈顶之间的其他实例全部移除掉,让该实例位于栈顶。

应用场景: 浏览器的界面 ,如果一个应用启动非常的消耗内存开销,那么可以做成这个启动模式。

  • singleInstance - 全局唯一模式 (单例模式)

特点: 如果哪一个界面,它的启动模式是singleInstance,那么它的实例将会存放到一个独立的栈中,并且这个栈有且只有它自己一个实例 。以后要想显示它,无非就是做栈的切换工作就可以了。

应用场景: 如果一个界面在单位时间内,创建的频率非常大,非常高。 可以设计成singleInstance模式。 拨号界面、紧急呼叫界面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值