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

2019-02-13  本文已影响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;

上一篇下一篇

猜你喜欢

热点阅读