zoukankan      html  css  js  c++  java
  • android onLayout死循环

    有时候,开发代码的时候,真的是因为你的无知,就导致了程序性能低下。

    比如:

        @Override
        protected void onLayout(boolean changed, int l, int t, int r, int b) {
            super.onLayout(changed, l, t, r, b);
            //解决分屏和手机低分辨率上面 显示异常 本地导入的取消全选和删除按钮重叠(附图)
            RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mTvAddBookShelf.getLayoutParams();
            layoutParams.width = APP.isInMultiWindowMode?Util.dipToPixel2(getContext(),80):Util.dipToPixel2(getContext(),120);
            if (DeviceInfor.DisplayWidth() <= 640 || APP.isInMultiWindowMode) {
                layoutParams.width = Util.dipToPixel2(getContext(),80);
            }else {
                layoutParams.width = Util.dipToPixel2(getContext(),100);
            }
            mTvAddBookShelf.setLayoutParams(layoutParams);
        }

    你在onLayout里面调用了setLayoutParams方法,那么这个方法就会执行onLayout,然后又执行setLayoutParams,然后又执行onLayout.你可以打印日志,发现boolean changed 是false。但是这个方法一直在调用。

    所以,以后在onlayout里面,禁止调用setLayoutParams方法。重新布局。总之一切会重新布局的方法,都不应该写在这里面。

  • 相关阅读:
    ASP.NET 文件下载
    Asp.net 加密解密类
    ASP.Net 获取服务器信息
    Visual Studio 2013 和 ASP.NET 预览
    Windows Server 2012安装时所需要的KEY
    WordPress主题模板层次和常用模板函数
    小meta的大作用
    《淘宝技术这十年》之LAMP架构的网站
    面试题(八)
    面试题(七)
  • 原文地址:https://www.cnblogs.com/caoxinyu/p/10568557.html
Copyright © 2011-2022 走看看