6. 使用Lint工具找出代码中的潜在问题

参考

一.Lint工具的作用

Lint 工具可检查您的 Android 项目源文件是否包含潜在错误,以及在正确性、安全性、性能、易用性、便利性和国际化方面是否需要优化改进

二.在Android Studio中使用Lint

三.Lint检测出的关于性能的16种问题

  1. DrawAllocation
    原因:在布局或者绘制函数(measure/layout/drwa)中创建了对象。因为这些函数可能别频繁调用,如果在这些函数里面创建对象,可能导致垃圾回收线程中断
    解决方法:
    提前创建对象

  2. WakeLock
    手机不能进入休眠,导致搞好点状态

  3. Recycle
    原因:TypeArrays,VelocityTrackers等用完之后没有回收
    解决方法:调用方法回收

  4. ObsoleteLayoutParam
    原因 View使用了无效的布局参数
    比如:LinearLayout的子View使用了在RelativeLayout中的属性

    
           
    
    

解决方法:去掉无用的参数

  1. UseCompoundDrawable
    原因:出现了ImageView+TextView的布局
    解决方法:建议将ImageView+TextView改成TextView+给TextView设置Drawable的形式
  2. HandlerLeak
    参考
    原因:Handler指向一个内部类,但是内部类隐式得持有外部类(Activity)的引用,而Handler又会被加入消息队列中不会被马上执行,这就导致了关闭Activity后,Handler没被销毁,Activty也没被销毁
    解决方法:
    1. Handler设置为静态内部类
    2. Handler中拥有一个Activity的弱引用,要使用Actvity时使用此弱引用。
  3. UseSparseArray
    尽量使用SpareArray代替HashMap
  4. UseValueOf
    使用常量对象时,应该使用ValueOf而不是使用new,比如需要42的对象,应该使用Integer.valueOf(42)而不是new Integer(42)
public static Integer valueOf(int i)
返回一个表示指定的 int 值的 Integer 实例。如果不需要新的 Integer  
实例,则通常应优先使用该方法,而不是构造方法 Integer(int),因为该方法有可能通过缓存经常请求的值而显著提高空间和时间性能。
  1. DisableBaseLineAlignment
    当一个LinearLayout的作用只是给内嵌的布局分配空间,应该关闭掉baseLineAliged属性
    比如:
   
      
      

    
  1. InefficientWeight
    当一个LinearLayout里只有一个布局且此布局又有weight属性,需要将width或者height设置为0,省略mearsure的过程。
    如下
 
      

    
  1. FloatMath:使用FloatMath替换MAthena
  2. Netesed Weights
    原因:

Layout weights require a widget to be measured twice. When a LinearLayout with non-zero weights is nested inside another LinearLayout with non-zero weights, then the number of measurements increase exponentially

解决方法:更改布局

  1. UnusedResoureces/UnuseEds:未使用的资源
    解决方法:删除未使用的资源
  2. Overdraw
    原因:给根布局设置一个背景,系统先试用主题的背景先绘制一遍背景再使用指定的背景,这时会发生Oberdraw
    解决方法:取消theme的背景
    注意:自己在Lint中未看见这个提示
  3. UselessLeaf/UselessParent
    View或者View的Parent没有用
    解决方法:去掉View或者View的Parent
  4. UnusedNamespace
    布局文件中没用的namespace
    解决方法:去掉没用的namespace

你可能感兴趣的:(6. 使用Lint工具找出代码中的潜在问题)