需要查看的一些链接,个人保存所用

http://blog.csdn.net/yangzhiloveyou/article/details/14043801

http://blog.csdn.net/liyong625175856/article/details/10145967

  景:

    EMUI1.5 EMUI1.6 SystemUI 升级的过程中,SystemUI加入了主题切换的方案,其间加入了大量的代码,为的是能响应主题切换的变化,例如应用图片、字体等。

这个修改对SystemUI的稳定性来说是一个挑战,添加新的功能很可能会造成内存泄漏等问题,使得引入的问题越来越多,对代码的可维护性也大大的增加了难度。

 

方案解决过程:

     1.   原方案接收onConfigurationChanged后,将整个视图依次重新加载

           如图()

           将父view中的子view置null,将其remove,最后将父view也重新加载,

           一旦新添加的view,在切换的过程没有及时释放,就会引起view产生内存垃圾,导致内存泄露

           方案修改(使用resource进行资源更新)

           Resources statusbarwindowsresource = (Resources) mStatusBarWindow.getResources();//获得res资源对象
           statusbarwindowsresource.flushLayoutCache(); //重新加载布局等资源

   2.   存在的问题:在EMUI2.3主题应用,在应用字体时不需要重启手机(之前版本是会提示手机重启)

         那么在应用字体之后,状态栏并不会重新加载,状态栏下的子view(下拉通知栏、快捷按钮)也不会进行重新加载,这样使得子view上的字体没有应用

        解决方案:保持状态栏父view不进行重载,在切换主题时只是对子View进行重载,保持父控件不变(父控件的重载会导致状态栏收缩的一个现象)

    总结:

       

     

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值