Android Activity 基础接口知识和常见问题
Activity 知识点及问题点
- 接口
- onMultiWindowModeChanged
- onConfigurationChanged
- 常见问题
- Android解决点击桌面图标,就重新启动应用程序问题
接口
onMultiWindowModeChanged
-
定义
onMultiWindowModeChanged是Android中Activity类的一个回调方法。它会在活动(Activity)的多窗口模式发生改变时被调用。在Android 7.0(API级别24)及以上版本中,用户可以将应用程序置于多窗口模式,例如分屏模式或者画中画模式,当活动进入或退出这种多窗口模式时,onMultiWindowModeChanged方法就会被触发。
-
方法签名及参数含义
- 方法签名为
public void onMultiWindowModeChanged(boolean isInMultiWindowMode)。其中isInMultiWindowMode参数表示活动当前是否处于多窗口模式。如果isInMultiWindowMode为true,则表示活动刚刚进入多窗口模式;如果为false,则表示活动刚刚退出多窗口模式。
- 方法签名为
-
一般情况不需要特殊配置
- 通常情况下,
onMultiWindowModeChanged方法的触发不需要在AndroidManifest.xml文件中进行特殊配置来使它生效。只要你的应用运行在支持多窗口模式的Android设备(API级别24及以上)上,并且活动(Activity)进入或退出多窗口模式,这个方法就会被自动调用。
- 通常情况下,
-
相关属性说明
- 不过,在
AndroidManifest.xml中有一些与多窗口模式相关的属性可以用于控制活动在多窗口环境下的行为。 android:resizeableActivity属性:- 这个属性用于指定活动是否可以在多窗口模式下调整大小。其默认值根据应用的
targetSdkVersion有所不同。如果targetSdkVersion大于等于24,默认值为true,这意味着活动默认可以被调整大小并且onMultiWindowModeChanged方法能够正常响应大小调整导致的模式变化;如果targetSdkVersion小于24,默认值为false,此时活动在多窗口模式下不会自动调整大小,并且可能影响onMultiWindowModeChanged方法的触发逻辑(因为活动可能不会正确进入多窗口模式下的调整大小状态)。 - 示例:
- 这个属性用于指定活动是否可以在多窗口模式下调整大小。其默认值根据应用的
- 不过,在
<activityandroid:name=".MainActivity"android:resizeableActivity="true">
</activity>
android:supportsPictureInPicture属性:- 当你希望活动支持画中画(Picture - in - Picture)这种特殊的多窗口模式时,可以设置这个属性为
true。画中画模式是一种特殊的多窗口模式,主要用于视频播放等场景,使得视频可以在一个小窗口中继续播放,用户可以同时操作其他应用。如果你的活动支持画中画模式,当进入或退出画中画模式时,onMultiWindowModeChanged方法也会被触发。 - 示例:
- 当你希望活动支持画中画(Picture - in - Picture)这种特殊的多窗口模式时,可以设置这个属性为
<activityandroid:name=".VideoPlayerActivity"android:supportsPictureInPicture="true">
</activity>
- 使用场景
-
布局调整
- 当活动进入多窗口模式时,可能需要重新调整布局。例如,在单窗口模式下,一个新闻阅读应用的文章内容区域可能占据了大部分屏幕空间,而相关的评论区域只占一小部分。当进入多窗口模式后,可以缩小文章内容区域,使评论区域也能更合理地显示,为用户提供更好的多任务体验。
-
资源管理优化
- 在多窗口模式下,应用的资源使用方式可能需要改变。比如,视频播放应用在单窗口模式下可以以较高的分辨率和帧率播放视频,以提供更好的视觉体验。但在多窗口模式下,为了节省系统资源并保证应用的流畅性,可以降低视频的分辨率或帧率。
-
数据更新与同步
- 对于一些需要实时更新数据的应用,如股票交易应用。在单窗口模式下,可能每秒更新一次数据。当进入多窗口模式后,为了避免过多的资源占用和可能的性能问题,可以适当降低数据更新频率。
-
onConfigurationChanged
https://yoshin.blog.csdn.net/article/details/143673878?fromshare=blogdetail&sharetype=blogdetail&sharerId=143673878&sharerefer=PC&sharesource=weixin_35691921&sharefrom=from_link
常见问题
Android解决点击桌面图标,就重新启动应用程序问题
场景:
按HOME键隐藏程序,但点击桌面图标,重新进入程序后,发现界面跟刚安装进入时是一样的,相当于程序重新初始化加载了。举个明显的例子:比如我的应用是定时器,有倒计时功能,我第一次打开程序时,已经启动了倒计时,当我按HOME键隐藏程序,让程序进入后台,之后我从桌面点击图标进入,发现倒计时重新开始了,这很明显是个bug。
原因分析:
原因很可能是intent携带的信息不一样导致的
原文链接:Android解决点击桌面图标,就重新启动应用程序问题
https://blog.csdn.net/qq15577969/article/details/107141504
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//这是为了应用程序安装完后直接打开,按home键退出后,再次打开程序出现的BUGif ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {//结束你的activityreturn;}
}
相关文章:
Android Activity 基础接口知识和常见问题
Activity 知识点及问题点 接口onMultiWindowModeChangedonConfigurationChanged 常见问题Android解决点击桌面图标,就重新启动应用程序问题 接口 onMultiWindowModeChanged 定义 onMultiWindowModeChanged是Android中Activity类的一个回调方法。它会在活动…...
利用python 检测当前目录下的所有PDF 并转化为png 格式
以下是一个完整的 Python 脚本,用于检测当前目录下的所有 PDF 文件并将每一页转换为 PNG 格式: import os from pdf2image import convert_from_path# 设置输出图像的 DPI(分辨率) DPI 300# 获取当前目录 current_directory os…...
解决 Spring Boot 中 `Ambiguous mapping. Cannot map ‘xxxController‘ method` 错误
前言 在使用 Spring Boot 开发 Web 应用时,经常会遇到各种各样的错误。其中一种常见的错误是 Ambiguous mapping. Cannot map ‘testController‘ method。本文将详细介绍这个错误的原因及解决方法,帮助开发者快速定位并解决问题。 错误解释 这个错误…...
C++ 函数返回值优化
本文中部分内容来自下面的文章,还有一部分来自智谱清言 C 返回值优化_c 局部变量返回优化-CSDN博客 elision:省略 copy elision:拷贝省略 RVO (Return Value Optimization):返回值优化 ------ 我最近也遇到了上面博文中说到的问题&…...
c++源码阅读__ThreadPool__正文阅读
一. 简介 本章我们开始阅读c git 高星开源项目ThreadPool, 这是一个纯c的线程池项目, 并且代码量极小, 非常适合新手阅读 git地址: progschj / ThreadPool 二. 前提知识 为了面对不同读者对c掌握情况不同的情况, 这里我会将基本上稍微值得一说的前提知识点, 全部专门写成一篇…...
关于ES的查询
查询结果那么多字段都是什么? 为什么会提到这个问题呢,因为默认ES查询的结果会有很多信息,我们可能并不希望要那么多数据,所以你需要了解这些字段都表示什么,并正确的返回和使用它们。 took– Elasticsearch 运行查询…...
数据结构初识
目录 1.初识 2.时间复杂度 常见时间复杂度举例: 3.空间复杂度 4.包装类&简单认识泛型 4.1装箱和拆箱 5.泛型 6.泛型的上界 7.泛型方法 8.List接口 1.初识 1.多画图 2.多思考 3.多写代码 4.多做题 牛客网-题库/在线编程/剑指offer 算法篇:…...
保存数据到Oracle时报错ORA-17004: 列类型无效: 1111
1、问题描述: 关键信息:Mybatis;Oracle (1)保存信息到Oracle时报错: Caused by: org.apache.ibatis.type.TypeException: Error setting null for parameter #10 with JdbcType OTHER . Try setting a dif…...
Excel——宏教程(1)
Microsoft excel是一款功能非常强大的电子表格软件。它可以轻松地完成数据的各类数学运算,并用各种二维或三维图形形象地表示出来,从而大大简化了数据的处理工作。但若仅利用excel的常用功能来处理较复杂的数据,可能仍需进行大量的人工操作。…...
论文浅尝 | MindMap:知识图谱提示激发大型语言模型中的思维图(ACL2024)
笔记整理:和东顺,天津大学硕士,研究方向为软件缺陷分析 论文链接:https://aclanthology.org/2024.acl-long.558/ 发表会议:ACL 2024 1. 动机 虽然大语言模型(LLMs)已经在自然语言理解和生成任务…...
第6章:TDengine 标签索引和删除数据
TDengine 标签索引和删除数据 目标 掌握标签索引的创建、删除掌握超表、子表创建以及数据删除删除数据 删除数据是 TDengine 提供的根据指定时间段删除指定表或超级表中数据记录的功能,方便用户清理由于设备故障等原因产生的异常数据。 注意:删除数据并不会立即释放该表所…...
【微软:多模态基础模型】(5)多模态大模型:通过LLM训练
欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html)原创作品 【微软:多模态基础模型】(1)从专家到通用助手 【微软:多模态基础模型】(2)视觉理解 【微…...
海外带云仓多语言商城源码,多语言多商家云仓一键代发商城
新增海外仓,云仓国际供应链系统,商家可登陆云仓进行批量发货 商城修复了一些bug以及增加了订单数字提示,优化加载速度,二开了一些细微功能 基于 PHP Laravel 框架开发的一款 Web 商城系统。 1.前端多国语言自由切换,…...
android:taskAffinity 对Activity退出时跳转的影响
android:taskAffinity 对Activity跳转的影响 概述taskAffinity 的工作机制taskAffinity对 Activity 跳转的影响一个实际的开发问题总结参考 概述 在 Android 开发中,任务栈(Task)是一个核心概念。它决定了应用程序的 Activity 如何相互交互以…...
Apache Dolphinscheduler数据质量源码分析
Apache DolphinScheduler 是一个分布式、易扩展的可视化数据工作流任务调度系统,广泛应用于数据调度和处理领域。 在大规模数据工程项目中,数据质量的管理至关重要,而 DolphinScheduler 也提供了数据质量检查的计算能力。本文将对 Apache Do…...
solana链上智能合约开发案例一则
环境搭建 安装Solana CLI:Solana CLI是开发Solana应用的基础工具。你可以通过官方文档提供的安装步骤,在本地环境中安装适合你操作系统的Solana CLI版本。安装完成后,使用命令行工具进行配置,例如设置网络环境(如开发网…...
使用 PyTorch 实现 ZFNet 进行 MNIST 图像分类
在本篇博客中,我们将通过两个主要部分来演示如何使用 PyTorch 实现 ZFNet,并在 MNIST 数据集上进行训练和测试。ZFNet(ZFNet)是基于卷积神经网络(CNN)的图像分类模型,广泛用于图像识别任务。 环…...
车轮上的科技:Spring Boot汽车新闻集散地
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理汽车资讯网站的相关信息成为必然。开发合适…...
IDEA2023 SpringBoot整合Web开发(二)
一、SpringBoot介绍 由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot提供了一种新的编程范式,可以更加快速便捷…...
国产三维CAD 2025新动向:推进MBD模式,联通企业设计-制造数据
本文为CAD芯智库原创整理,未经允许请勿复制、转载! 上一篇文章阿芯分享了影响企业数字化转型的「MBD」是什么、对企业优化产品设计流程有何价值——这也是国产三维CAD软件中望3D 2024发布会上,胡其登先生(中望软件产品规划与GTM中…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
