Android 10深色主题适配踩坑记录

2023-11-03

1. 问题简述
Android 10 推出了深色主题,便于用户根据白天和夜晚自由切换合适的主题。在适配的过程中,要特别注意,切换主题会导致当前activity被重建,也就是会重新走一遍Activity的生命周期,就和横竖屏切换时会重新走生命周期一样,这时如果你正在处于录制视频的页面并且正在录制视频,如果你下拉打开通知栏,然后点击切换深色主题,就会导致当前的录制停止。

2. 问题分析
出现此文题的原因就是切换到深色主题时导致activity被重建了。有的解决方法是通过activity的onSaveInstanceState(@NonNull Bundle outState)来保存退出时的状态,然后在onResume()时再通过onRestoreInstanceState(@NonNull Bundle savedInstanceState) 恢复数据,这种方式我个人觉得在录制视频时不可行,因为类似于Camera这种系统的app,在onPause()和onResume()方法中都会做很多的操作,如相机的状态,各种数据的保存等等,如果都靠上述两个方法来恢复和保存,那就太繁琐了吧,而且在相机录像过程中切换主题导致录像停止是不允许的,用户会觉得很奇怪。

3. 问题解决
当然用activity的保存和恢复方案在某些情况也是可行的,主要是视情况而定吧。在录制视频时,我用的方式是在AndroidManifest.xml中的相关ACtivity中加上: android:configChanges=“uiMode”,然后在对应的activity中重写onConfigurationChanged(Configuration newConfig) 方法就行,这样的话,再执行切换主题时,就会去执行onConfigurationChanged()方法,而不会重新走activity的生命周期了。(在此特别注意,有时候在开发系统app时,运行app的方式是通过“adb push 自己编译出apk的目录 系统apk"目录的方式来运行调试的,这种方式可以免去很多权限上的问题,但是这种情况先AndroidManifest.xml文件已经解析过了,也是是说你再修改AndroidManifest文件,push到系统的相应目录时,也不会起作用了。如果你正好在适配Android10深色主题,那么你要注意,这时你在AndroidManifest中增加uiMode的属性,在Activity中并不能收到onConfigurationChanged()方法的回调,因为系统压根就没有去解析AndroidManifest.xml文件)就因为这个,我查了一天为啥不走onConfigurationChanged()方法,还是得加强学习呀。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 10深色主题适配踩坑记录 的相关文章

  • Visual Studio 不允许我在 Android 物理设备上进行调试

    我正在使用 Xamarin 和 Visual Studio 2013 开发 Android 应用程序 我已将 Android 小程序连接到计算机 Sansung Kies 识别了该设备 Adb 也能识别它 因为当我输入 adb device
  • 通过数据绑定将字符串传递到包含的布局不起作用

    我正在尝试使用 Android 数据绑定功能将一个简单的字符串从我的主布局传递到布局 它编译得很好 但传递给包含的值实际上并未传递 即 它没有出现在我的布局中
  • EditText 中的验证允许 IP 或 Web Url 主机

    我需要对我的 EditText 进行验证 以便它允许我输入有效的 IP 地址格式 即示例 132 0 25 225 or 网址格式 www 例如 www example com 逻辑是 如果用户首先输入任何数值 则验证 IP 将执行操作 否
  • 在 Android 中创建和使用 9 补丁图像

    我最近听说了 9 补丁图像 我知道它是 9 平铺的并且是可拉伸的 我想了解更多 如何创建 9 块图像 有什么工具吗 我可以通过 AndroidSDK 或代码创建它吗 9 patch 相对于普通 png 的主要优点 它是否可以根据屏幕动态 自
  • 我可以在 firebase android 中加载另一个用户个人资料图像吗?

    如果我有其他用户的电子邮件但我以其他用户身份登录 我是否可以加载其他用户的个人资料图像 如果您使用 Firebase Storage 那么从技术上讲是的 它只是一个您可以从中检索任何文件的文件系统 如果不伪造您的应用程序 获取 api 密钥
  • 应用程序实例是否始终在任何活动之前创建?

    在 Android 中 您可以通过扩展 Application 类并在 Manifest 中声明名称来提供您自己的 Application 类实现 我的问题是 这个实现是否总是在初始活动之前创建 或者活动可以在应用程序实例有时间创建之前启动
  • Android Studio:lambda 不起作用[重复]

    这个问题在这里已经有答案了 当尝试使用 lambda 表达式时 我遇到了一些 Gradle 构建错误 错误 41 100 错误 source 1 7 不支持 lambda 表达式 使用 source 8 或更高版本来启用 lambda 表达
  • Android Studio - 错误:未捕获翻译错误:com.android.dx.cf.code.SimException:本地 0001:无效

    我刚刚使用 Android Studio 设置了一台新计算机 并从 bitbucket 导入了我的项目 问题是我现在在尝试构建项目时遇到此错误 信息 Gradle 任务 app clean app generateDebugSources
  • 按钮未显示在屏幕上

    我创建了一个应用程序 其中显示带有图像和文本的列表视图 我在页面末尾添加按钮 但这没有显示在屏幕上 我是 Android 新手 我该如何解决这个问题 这是我的 UI XML 代码
  • 为什么按钮上的 maxWidth 不起作用以及如何解决它?

    我的布局上有两个按钮 在大屏幕设备 平板电脑 上我想限制它们的宽度 这样它们看起来就不会很荒谬 我希望使用 maxWidth 属性 但它显然在我的场景中没有任何作用 这是布局定义 按钮使用布局的整个宽度 忽略 maxWidth 中的任何值
  • Android - 当不在栏顶部时推送通知空白

    我在使用 Android 推送通知时遇到一个小问题 如果有 3 个通知 并且只有其中一个显示标题和消息 位于酒吧顶部的那个 如果有人知道可能是什么问题 请告诉我 请参阅此链接上的图像 这就是我接收通知的方式http postimg org
  • 使用 Android 播放任意音调

    有没有办法让Android发出任意频率的声音 意思是 我不想预先录制声音文件 我环顾四周 音调发生器 http developer android com reference android media ToneGenerator html
  • 监听什么来检测 Android 中的请勿打扰模式更改?

    我希望我的应用程序在手机设置为请勿打扰模式 仅限闹钟 仅限优先级或完全静音 时显示通知 通过聆听 这效果非常好android media RINGER MODE CHANGED在快速设置中检查此模式并在已选择的选项卡中选择模式时 但是 当选
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • Android模拟器分配内存失败8

    当我尝试从 Eclipse 运行 WXGA800 模拟器时 出现如下错误 Failed to allocate memory 8 This application has requested the Runtime to terminate
  • 如何在android中的操作栏中创建Edittext?

    我们可以在操作栏中使用编辑文本吗 在阅读了 Google 中的大量资源后 我找不到如何在操作栏中创建编辑文本 谁能告诉我该怎么做 您可以设置自定义View为了ActionBar像这样 getActionBar setCustomView R
  • android 中camera.setParameters 失败

    我已将相机功能包含在我的应用程序中 我还在市场上推出了该应用程序 我从一位用户那里收到一条错误消息 称他在打开相机时遇到错误 我已经在 2 1 的设备上测试了该应用程序 我从用户那里得到的错误是使用 Nexus One 它主要运行 2 2
  • Android:打开和关闭SQLite数据库

    我正在开发Android应用程序 我经常在其中访问本地数据库 该数据库可以从不同的主题访问 因此我遇到了数据库的协调问题 我使用以下open and close method public void open mDb mDbHelper g
  • 如何获取android手机型号、版本、sdk详细信息?

    如何获取android手机型号 版本 sdk详细信息 首先 看看 android sdk 页面上的这些 Build 类 http developer android com reference android os Build html h
  • 如何在Android中解析xml类型的HTTPResponse

    我有一个 Android 应用程序 我使用 POST 方法来获取响应 这是我的代码 HttpResponse httpResponse httpclient execute httppost HttpEntity resEntity htt

随机推荐

  • Python框架之Django Web框架的使用(一)--快速入门

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • linux查看rsync的命令,Linux rsync 命令学习

    Rsync命令和cp命令很像 但是功能似乎更加复杂点 主要用来备份数据 看了网上一堆介绍的文章 感觉不是很通俗易懂 下面按照我的理解 做一些笔记 同步方式 之前接触过一些同步软件 例如坚果云 百度云盘等等 他们对于同步方式都是有一些选择项的
  • 选址问题

    选址问题 设施选址问题 Facility Location Problem 自20世纪60年代初期以来 在运筹学中一直占据着中心位置 它来自于工厂 仓库 超市 学校 医院 图书馆 火车站 代理服务器 传感器等位置的确定问题 设施选址问题是N
  • 计算机添加usb网络打印机,方便实用!教您如何简单地将USB打印机更改为无线打印机!...

    将USB打印机更改为无线打印机 只需完成三个主要步骤即可 首先 硬件准备 首先 您需要拥有一个带有USB端口和openwrt的路由器 编辑器使用RG100A 作为打印服务器 性能要求不高 只需将最初插入计算机USB的打印电缆插入路由器的US
  • 使用EasyPoi轻松导入导出Excel文档

    提到Excel的导入导出 大家肯定都知道alibaba开源的EasyExcel 该项目的github地址为 https github com alibaba easyexcel 这个项目非常活跃 项目诞生的目的就是为了简化开发 降低内存消耗
  • SCJP认证试题(十一)

    author yaoyuan 10 package com sun scjp 11 public class Geodetics 12 public static final double DIAMETER 12756 32 kilomet
  • 追求极致速度,极简多模态预训练模型ViLT,推理速度比UNITER快60倍!(ICML2021)...

    关注公众号 发现CV技术之美 写在前面 视觉和语言预训练 VLP 提高了各种联合视觉和语言下游任务的表现 然而 当前的VLP方法严重依赖于图像特征提取的过程 其中大部分涉及区域监督 例如 目标检测 和卷积结构 例如 ResNet 他们存在以
  • ubuntu16.04安装CUDA、cuDNN GTX 1660Ti

    在安装之前需要先确定已经安装好与显卡适配的驱动 如果没有的话 下载驱动 https www nvidia cn Download index aspx lang cn 安装 https blog csdn net frothmoon art
  • PCL 计算空间三角形的面积

    目录 一 算法原理 1 空间三角形面积 2 参考文献 二 代码实现 三 结果展示 一 算法原理 1 空间三角形面积 空间三角形面积的计算公式为 A P P S 1 P
  • FreeRTOS韦东山视频前八节学习笔记

    RTOS架构的概念 裸机开发 while 1 WEIFAN LIAOTIAN 多任务并行在while 1 循环 FreeeRTOS while 1 creat task 喂饭 creay task 回信息 start scheduler 让
  • Java课程设计——学生信息管理系统(源码)

    项目简介 该项目可以分为三个模块 登录模块 主页面模块 信息储存模块 本系统完成了基本所需功能 界面清晰 操作简单又实用 基本满足了学校对学生信息的增添 查询 修改和删除等功能 且具有登录系统使该系统具有一定的安全性 大大减少了操作人员和用
  • jstl 格式化时间日期标签讲解

  • 使用Openjdk8和maven时出错:java.security.InvalidAlgorithmParameterException

    错误类型 Maven java lang RuntimeException Unexpected error java security InvalidAlgorithmParameterException the trustAnchors
  • 【PCL】基于法线的差异来分割点云

    基于法线差异来分割点云 1 法向量的计算及可视化 法线又称法向量 因为在三维的点云中 根据一个点的K近邻点或者一个点的radius半径范围内的点拟合一个平面 而垂直这个平面且经过改点的线称之为法向量 法向量是点云点到另一个点的有方向的线段
  • 在django项目里创建子路由

    首先创建一个django项目 然后开始创建子路由 创建django项目 1 在pycharm中创建一个Blog graden的django项目 注意环境要选择正确 2 在Blog graden项目的控制台中创建一个blog app 3 将t
  • BIO、NIO、AIO区别

    一 BIO NIO AIO特点 1 BIO的特点就是每次一个客户端接入 都要在服务端创建一个线程来服务于这个客户端 所以如果有很多个客户端 就会对应成千上万个服务端线程 这会导致服务端负载过高 甚至卡死 2 NIO是同步非阻塞io 客户端和
  • C++ opencv人脸识别框

    需求 视频实时定位人脸位置 并画框 类似效果如下 分析 取视频帧 每一帧其实就类似一张图片 利用opencv的人脸识别模块 检测每一帧并进行划线 处理完成后显示 最后组成就是动态的带人脸识别框的视频 解决方法 下面是每一帧数据的处理方法 加
  • Myeclipse破解失败&&error: unable to access jarfile cracker.jar解决方法

    我的情况是在cracker jar破解成功后 Myeclipse依旧显示不成功 破解方案如下 1 进入cmd 输入java jar cracker jar 成功则显示图形 失败则会显示 error unable to access jarf
  • 台式机安装Linux系统

    材料 台式机 U盘 内存大于8G CentOs7 步骤一 U盘启动电脑 启动成功画面 选择第一个 按E或者 Tab键 进行编辑 vmlinuz initrd initrd img inst stage2 hd LABEL CentOS x2
  • Android 10深色主题适配踩坑记录

    1 问题简述 Android 10 推出了深色主题 便于用户根据白天和夜晚自由切换合适的主题 在适配的过程中 要特别注意 切换主题会导致当前activity被重建 也就是会重新走一遍Activity的生命周期 就和横竖屏切换时会重新走生命周