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 重复绘制,造成内存浪费。
相关推荐
程序员陆业聪2 小时前
别再说 Flutter 是唯一选择了——KMP 正在悄悄抢走它的地盘
android
三少爷的鞋2 小时前
2026 已过 1/3:事豫则立,不预则废——关于架构、协程与边界的思考
android
冬奇Lab2 小时前
Android 15 音频子系统(八):Audio HAL 与硬件接口——音频数据的最后一公里
android·音视频开发·源码阅读
魔士于安4 小时前
unity完整项目走廊
游戏·unity·游戏引擎·贴图·模型
cocos精品源码 - 汉字游戏4 小时前
我要验牌 - Cocos 汉字游戏
游戏·汉字找茬王·乐趣找字·汉字拆解·cocos找字·cocos汉字·cocos小游戏
黄林晴5 小时前
Compose Multiplatform 1.10 发布:里程碑式更新!
android
流星白龙5 小时前
【MySQL】19.MySQL用户管理
android·mysql·adb
匆忙拥挤repeat6 小时前
Android Compose 可组合项的生命周期、副作用API
android
hnlgzb7 小时前
目前编写安卓app的话有哪几种设计模式?
android·设计模式·kotlin·android jetpack·compose
Swift社区7 小时前
从手游到鸿蒙游戏:开发逻辑变了什么?
游戏·华为·harmonyos