原文连接:http://ltj150539.blog.163.com/blog/static/19360535620154995740630/android
使用Eclipse编译Android程序时常常会遇到@SuppressLint或者@SuppressWarnings黄色警告,虽然不去处理程序依然可以运行,可是强迫症表示看着实在不舒服。实际上,解决这些问题每每会提升程序的安全性、可用性、性能等。canvas
一、@SuppressLint("DrawAllocation")安全
缘由:View及其子类的onDraw(Canvas canvas)方法会实时调用以更新界面,因此在onDraw(Canvas canvas)方法中实例化对象(好比Paint paint = new Paint())会影响效率。异步
解决办法:将这些对象改成类的成员变量。ide
二、@SuppressWarnings("rawtypes")@SuppressWarnings({ "unchecked", "rawtypes" })性能
1 |
|
三、@SuppressLint("HandlerLeak")对象
缘由:Handler在Android中用于消息的发送与异步处理,经常在Activity中做为一个匿名内部类来定义,此时Handler会隐式地持有一个外部类对象(一般是一个Activity)的引用。当Activity已经被用户关闭时,因为Handler持有Activity的引用形成Activity没法被GC回收,这样容易形成内存泄露。blog
正确的作法是将其定义成一个静态内部类(此时不会持有外部类对象的引用),在构造方法中传入Activity并对Activity对象增长一个弱引用,这样Activity被用户关闭以后,即使异步消息还未处理完毕,Activity也可以被GC回收,从而避免了内存泄露。
1 |
public static class MyHandler extends Handler { |
四、@SuppressLint("SimpleDateFormat")
1 |
|
五、@SuppressLint("DefaultLocale")
1 |
|