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()方法,还是得加强学习呀。

Android 10深色主题适配踩坑记录相关推荐

  1. 转:android.support升级到androidx踩坑记录

    原文链接:android.support升级到androidx踩坑记录 - 简书 年前想着Google老大之前提醒过将项目升级到androidx,所以年前一通操作猛如虎把Android Studio唰 ...

  2. 华为全面屏适配踩坑记录

    华为手机什么都好,就是底部有个恶心的虚拟导航栏,对开发者而言为了去掉这个导航栏真是操透了心,这里主要记录全屏状态下对虚拟导航栏的隐藏做的尝试. 首先,Activity全屏设置: @Overridepr ...

  3. Android Q暗色模式适配踩坑—状态栏

    暗色模式已经不是什么新鲜玩意了,大家最近看到关于暗色模式最多的内容可能就是iOS版本微信未适配暗色模式面临被AppStore下架的风险.然后今天早上一醒来,发现Android的微信也黑了(因为我手机一 ...

  4. 测试机IOS 10.2.1越狱踩坑记录

    0x01 越狱不成功 尝试使用之前的方法没有越狱成功 原来的越狱方法是:https://www.i4.cn/news_detail_16702.html 通过impactor,将软件doubleH3l ...

  5. Android 海外踩坑记录

    Android 海外踩坑记录 谷歌相关: 1.免安装应用的版本号需要比安装式应用的要低,所以安装式应用打包时可以将版本号尽量设置大一点. 2.如果该应用存在免安装应用,那么安装式应用的manifest ...

  6. Android 实现全屏截图、剪裁图片、分享图片至其他应用进程功能(踩坑记录)

    Android 实现全屏截图.剪裁.分享功能 项目中需要用到 截图分享 的功能,特此写下查询资料过程中的踩坑记录. android 26以上,google 官方文档支持 PixelCopy 实现截图效 ...

  7. 【问题解决】Android JDK版本不匹配导致崩溃踩坑记录

    [问题解决]Android JDK版本不匹配导致崩溃踩坑记录 部分机型反馈崩溃问题 谷歌回复与解决方案 Android打包脱糖操作 对比与排查 总结 前几天同事遇到一个非常诡异的报错,紧急处理后,趁着 ...

  8. Android Kotlin Gson解析踩坑记录

    一.背景 一般我们在进行网络请求拿到返回结果之后,我们期望能够转化成对应的Java实体类,在这个转化过程中,可以使用自动解析的方式,也可以使用三方提供的工具类,比如Gson.FastJson等. 针对 ...

  9. sonar覆盖率怎么统计的_实战|Java 测试覆盖率 Jacoco插桩的不同形式总结和踩坑记录(上)...

    本文为霍格沃兹测试学院优秀学员关于 Jacoco 的小结和踩坑记录.测试开发进阶学习,文末加群. 一.概述 测试覆盖率是老生常谈的话题.因为我测试理论基础不是很好,这里就不提需求.覆盖率等内容,直奔主 ...

最新文章

  1. pcb结构链表_第2章 2-1进程与PCB
  2. 南通市交巡警支队同城异地容灾备份系统项目中标结果公告
  3. 那些帮助你成为优秀前端工程师的讲座——《性能篇》
  4. Vimeo针对GIF性能和质量的改进
  5. SAP CRM WebClient UI的on_new_focus应该怎么理解
  6. C#趣味程序----分数之和
  7. 花季少女竟然有个三年级老公??!
  8. 【渝粤题库】陕西师范大学800004 遥感概论
  9. Linux最常用的基础命令 下篇
  10. Objective-C的Runtime System
  11. linux下查看mysql安装的版本
  12. struts2生成随机验证码图片
  13. c++中istream类型到bool类型的隐式转换
  14. 使用PhoneNumberValidator判断用户输入的电话格式,并用PhoneFormatter对电话号码格式化。...
  15. 20165204 20165216 20165220 实验四 外设驱动程序设计
  16. 【图像评价】基于matlab无参考图像质量评价NIQE【含Matlab源码 681期】
  17. 笔记本电脑测试性能哪个软件好,新笔记本测试如何进行 旧笔记本测试性能【图文】...
  18. 矿物质防火电缆对于水的防护也很重要
  19. 阿里云域名优惠口令获取及使用方法
  20. 用 VeraCrypt 加密闪存盘

热门文章

  1. 要写脚本,编程不好不要紧--浅谈CTF中脚本的编写方法
  2. 【算法题目】【DFS】岛屿的最大面积
  3. fill fillchar memset用法
  4. 批量加水印加logo#ps入门基础教程学习ps视频教程
  5. GridLayout(网格布局)
  6. Mac下删除.m2文件夹
  7. mysql 纯真ip 导出dat_C# 读取纯真IP数据库QQWry.dat获取地区信息
  8. flex之selectedItem与selectedIndex的区别
  9. IntelliJ IDEA配置javac命令
  10. 【常考】408快排单函数简单模板(附注释+测试代码)