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 重复绘制,造成内存浪费。
相关推荐
张老师带你学3 小时前
unity道具,哑铃架+天文望远镜,一边运动一边观星
科技·游戏·unity·模型·游戏美术
三少爷的鞋4 小时前
为什么 Google 不再推荐 SharedPreferences?答案其实只有一个:锁
android
JMchen1234 小时前
企业级图表组件库完整实现
android·java·经验分享·笔记·canvas·android-studio
宝贝儿好9 小时前
【强化学习实战】第十一章:Gymnasium库的介绍和使用(1)、出租车游戏代码详解(Sarsa & Q learning)
人工智能·python·深度学习·算法·游戏·机器学习
Swift社区9 小时前
如果今天重新做 Claw,会用什么技术
游戏·unity
草明12 小时前
android 蓝牙连接-兼容旧版本
android
鹏多多.12 小时前
Flutter使用screenshot进行截屏和截长图以及分享保存的全流程指南
android·前端·flutter·ios·前端框架
Awna14 小时前
移动端游戏 UI 与动效设计参考指南
游戏·ui
Kim Jackson15 小时前
我的世界Java版1.21.4的Fabric模组开发教程(二十三)创建生物(下)实体在游戏中的实现(1)
java·游戏·fabric
Flywith2415 小时前
【每日一技】Warp Workflow 使用示例
android·前端