Android基础操作-----SuppressLint和SuppressWarnings

一、SuppressLint

1)SuppressLint

Lint是一个静态检查器,它围绕Android项目的正确性、安全性、性能、可用性以及可访问性进行分析。
它检查的对象包括XML资源、位图、ProGuard配置文件、源文件甚至编译后的字节码。
Lint包含了API版本检查、性能检查以及其他诸多特性。
可以使用@SuppressLint标注忽略指定的警告。
如果想去掉的话,可以右键点工程,然后在android tools 中,选择 clear lint marker 就没有这个错误了

其实,既然程序会报出这样的警告,肯定就会有他的不合理之处,只是并不会导致程序发生错误无法运行,我们写的代码平时也不多,所以一般对我们的程序不会有多大的影响,但是他会影响整个程序的安全性及一些其他性能,所以我们还是尽量去避免这写不合理之处。

2)@SuppressLint("NewApi")

我们有时会使用比我们在AndroidManifest中设置的android:minSdkVersion版本更高的方法,此时编译器会提示警告,解决方法是在方法上加上@SuppressLint("NewApi")或者@TargetApi()。
@SuppressLint("NewApi")屏蔽一切新api中才能使用的方法报的android lint错误
@TargetApi() 只屏蔽某一新api中才能使用的方法报的android lint错误
举个例子,某个方法中使用了api9新加入的方法,而项目设置的android:minSdkVersion=8,此时在方法上加@SuppressLint("NewApi")和@TargetApi(Build.VERSION_CODES.GINGERBREAD)都可以,以上是通用的情况。
而当你在此方法中又引用了一个api11才加入的方法时,@TargetApi(Build.VERSION_CODES.GINGERBREAD)注解的方法又报错了,而@SuppressLint("NewApi")不会报错,这就是区别。

注意,不管你使用了哪个注解,作用仅仅是屏蔽android lint错误,所以在方法中还要根据api的版本进行判断版本做不同的操作。

3)@SuppressLint("DrawAllocation")

我们从警告的提示来看,Avoid object allocations during draw/layout operations (preallocate and reuse instead),意为避免在绘制/布局中去实例化对象,解决办法:将这些对象改为类的成员变量。
因为在View及其子类的onDraw(Canvas canvas)方法,会实时调用以更新界面,会频繁的创建对象和进行垃圾回收等,这明显就会影响UI的显示性能,这样一个显示很顺畅的用户界面就会因对象分配引起的一些垃圾回收机制进行短暂的停滞。

4)@SuppressLint("HandlerLeak")

在主线程用Handler处理消息出现时会有警告,提示你,这块有内存泄露的危险,handler最好声明为static的

5)@SuppressLint("CommitPrefEdits")

sharedPreferences.edit()时,获取到的Editor必须使用commit或apply来完成操作。所以再没有写commit或apply之前或提示@SuppressLint("CommitPrefEdits");
Editor的commit和apply相比,apply效率跟高,commit方法返回boolean类型,判断是否存储成功。
简略解释:apply先将数据存储到内存,再异步操作存储到磁盘,而commit:写数据时就同步写到磁盘中了,所以效率会低一些。

6)@SuppressLint("RestrictedApi") 

受限制的API,那应该还存在其他的替代方式,就尽量不要使用。

7)@SuppressLint(“SimpleDateFormat”) 

不规范写法:SimpleDateFormat format = new SimpleDateFormat(pattern); 
正确写法:SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.getDefault());

8)@SuppressLint(“DefaultLocale”) 

不规范写法:String lower = string.toLowerCase(); 
boolean b = “String”.toUpperCase().equals(“STRING”); 
正确写法:String lower = string.toLowerCase(Locale.getDefault()); 
boolean b = “String”.toUpperCase().equals(“STRING”);

二、@SuppressWarnings

@SuppressWarnings注解用法详解

 

你可能感兴趣的:(Android笔记)