Android性能优化之游戏的Theme背景图

近期,对游戏的内存优化,通过内存快照发现,某个Activity的theme背景图 占用3M 多。考虑着手对齐进行优化。

问题

查看游戏中的内存快照,发现有一个图片bitmap 占用3M 多,设置在Activity的背景中:

查看PhoneWindow中源码: 发现其mBackgroundDrawable从Theme中中windwoBackground属性生成对应的图片

在程序的主入口的Activity中的theme中加入图片作为背景,往往用于解决启动黑白屏问题

发现游戏项目中闪屏页面中theme已经设置该背景图,因此这里,不需要考虑黑白屏问题。

接着发现,在游戏界面中设置该背景图, 用于游戏引擎渲染前的过度画面。但存在两次重复设置问题,一处是theme 中bg, 另外一处是游戏Root根布局中backgroud 也设置了该图片,如下所示:

解决方案

在游戏界面中将该theme中windowbackground 设置其他的颜色,去掉该背景。节省内存3M ,在android 8.0以下设备尤其重要。

编译新包,查看内存快照发现,少了该图片对应的bitmap, 少了3M的内存占用。

经过多台 设备测试,并不会出现白屏问题,证明该方案可行。

总结

  • 慎重使用Theme的windowBackgroud 设置背景图,建议使用动态view来设置背景图,不需要使用的时,移除,可节省内存。
  • 防止Theme的windowBackgroud和Activity的根布局windowBackgroud 重复绘制,造成内存浪费。
相关推荐
黄林晴4 分钟前
Android 17 Beta 1 来了,这 6 个变化你必须提前知道
android
Kapaseker11 分钟前
Kotlin 协程的取消,我觉得设计的不好
android·kotlin
技术策划Boring15 分钟前
2025年工作复盘:开放世界3A项目配置管线与性能监控的探索
游戏·ue5·虚幻·p4·perforce
风痕天际17 分钟前
Godot扫雷游戏制作记录4——计算周围地雷数并显示
游戏·游戏引擎·godot
Libraeking23 分钟前
04 跨越边界:如何将 Android 本地能力暴露给 AI(MCP + Kotlin)
android·人工智能·kotlin
lucky670724 分钟前
Laravel3.X核心特性全解析
android
fengtangjiang30 分钟前
nacos服务之间相互调用
android·java·开发语言
安全不再安全32 分钟前
某驱动任意读漏洞分析 - 可用于游戏内存数据读取
c语言·测试工具·安全·游戏·网络安全
JiaoJunfeng33 分钟前
GP市场数据变更条件
android·google play·gp数据变更·谷歌市场数据变更·谷歌app数据变更·谷歌开发者app数据管理·海外app
独自破碎E37 分钟前
BISHI75 阶幂
android·java·开发语言