洛阳网站制作公司,桂林临桂区最新消息,公司logo查询网站,江西建设网官方网站最近在做项目的时候#xff0c;碰到方法的前面和类的前面有时会出现SuppressLint或者SuppressWarnings这样的黄色警告#xff0c;看起来很不舒服#xff0c;于是上网搜集了一些相关资料。发现这些警告的出现其实是由于我们编写代码时的一些不规范的写法导致#xff0c;解决…最近在做项目的时候碰到方法的前面和类的前面有时会出现SuppressLint或者SuppressWarnings这样的黄色警告看起来很不舒服于是上网搜集了一些相关资料。发现这些警告的出现其实是由于我们编写代码时的一些不规范的写法导致解决这些问题其实是能提高我们程序的安全性、可用性和性能的。接下来就让我为大家一一说明。 1、SuppressLint(“DrawAllocation”) 原因我们都知道View及其子类的OnDrawCanvas canvas方法会实时调用来更新界面的然而有时我们会在onDrawCanvas canvas方法中实例化对象如Paint paintnew Paint这样就会影响我们程序的效率。 解决办法将这些对象改为类的成员变量。
2、SuppressWarnings(“rawtypes”)和SuppressWarnings({ “unchecked”, “rawtypes” }) 不规范写法Class clazz Class.forName(“android.view.Display”); 正确写法Class? clazz Class.forName(android.view.Display);
3、SuppressLint(“HandlerLeak”) 原因Handler在Android中用于消息的发送与异步处理常常在Activity中作为一个匿名内部类来定义此时Handler会隐式地持有一个外部类对象通常是一个Activity的引用。当Activity已经被用户关闭时由于Handler持有Activity的引用造成Activity无法被GC回收这样容易造成内存泄露。 解决办法将其定义成一个静态内部类此时不会持有外部类对象的引用在构造方法中传入Activity并对Activity对象增加一个弱引用这样Activity被用户关闭之后即便异步消息还未处理完毕Activity也能够被GC回收从而避免了内存泄露。
public static class MyHandler extends Handler {private WeakReferenceActivity referencepublic MyHandler(Activity activity) {reference new WeakReferenceActivity(activity);}Overridepublic void handleMessage(Message msg) {if (reference.get() ! null) {switch (msg.what) {case 0:// do something...break;default:// do something...break;}}}}
另一种情况
不规范的写法private Handler mHandler new Handler() {Overridepublic void handleMessage(Message msg) {};};
正确的写法private Handler mHandler new Handler(new Handler.Callback() {Overridepublic boolean handleMessage(Message msg) {return false;}});
4、SuppressLint(“SimpleDateFormat”) 不规范写法SimpleDateFormat format new SimpleDateFormat(pattern); 正确写法SimpleDateFormat format new SimpleDateFormat(pattern, Locale.getDefault());
5、SuppressLint(“DefaultLocale”) 不规范写法String lower string.toLowerCase(); boolean b “String”.toUpperCase().equals(“STRING”); 正确写法String lower string.toLowerCase(Locale.getDefault()); boolean b “String”.toUpperCase().equals(“STRING”); 转自https://blog.csdn.net/qq_34706837/article/details/54964306