美文网首页
性能优化 - 常用代码和自定义View优化

性能优化 - 常用代码和自定义View优化

作者: 世道无情 | 来源:发表于2019-02-13 06:56 被阅读0次

    1. 常用代码


    1>:主线程中,不要做耗时操作;
    2>:不要在 onDraw中开辟大内存,因为 onDraw也是 主线程;
    3>:比如点击一个 button按钮,过了很久页面才能跳转过去,原因是因为 在 onCreate()方法中做了耗时操作,可以在页面中添加一个进度条,目的是先让页面从第一个页面跳转到第二个页面,但是这里必须注意:像类似的点击一个 button按钮,过了很久页面才能跳转过去的这种情况,只能出现一次,可以给数据做一次缓存, 第二次再进来时候需要直接从缓存中读取数据,就会快很多了


    点击button长时间不能跳转页面需要做缓存.png

    4>:在给 xml 设置 background时,如果根布局和子view布局颜色一样,就直接给 根布局设置 background,不要给 子view设置;
    5>:对于 text、textSize、textColor,全部写到 res下:

    text —— 必须把对应文本内容 写到string下边,然后引用到xml文件中;
    textSize —— 必须把对应文字大小 写到dimens下边,然后引用到xml文件中;
    textColor —— 必须把对应的文本内容 写到color下边,然后引用到xml文件中;

    这个是强制的,如果以后要修改 text、textSize、textColor等任意一个属性,直接在 res下边修改 string、dimens、color即可,不用再xml文件中一个一个修改,很麻烦;

    2. 自定义View


    1>:如果有多个地方需要同时使用一个对象,不要重复创建该对象,可以在一个地方事先创建好,然后直接调用就ok;
    2>:如果自定义View 涉及到动画,可以采用如下方式:

        /**
         * 针对于动画涉及到内存泄露的处理情况
         */
        @Override
        public void setVisibility(int visibility) {
            // 不要再去摆放和计算,少走一些系统源码
            super.setVisibility(View.INVISIBLE);
    
            // 1. 首先清除所有子view的动画
            mLeftView.clearAnimation();
            mMiddleView.clearAnimation();
            mRightView.clearAnimation();
    
            // 2. 获取父布局,移除父布局中的子view,最后移除所有view
            ViewGroup parent = (ViewGroup) getParent();
            if (parent != null){
                parent.removeView(this);
                removeAllViews();
            }
        }
    

    凡是涉及到动画,都可能涉及到 内存泄漏,可以采用上述方式解决内存泄漏:
    1>:首先清除 所有子view的动画;
    2>:获取父布局,移除父布局中的子view,最后移除所有view;

    相关文章

      网友评论

          本文标题:性能优化 - 常用代码和自定义View优化

          本文链接:https://www.haomeiwen.com/subject/araurqtx.html