@SuppressLint 和 @TargetApi達到的效果是一樣的,相對于SuppressLint ,TargetApi會根據函數里使用的API,嚴格匹配SDK版本,給出編譯錯誤,但是SuppressLint 則忽略了SDK版本。
例如:
[java]view plaincopy
@TargetApi(Build.VERSION_CODES.FROYO)
publicstaticFile?getExternalCacheDir(Context?context)?{
File?dir;
//????????if?(!VersionUtils.hasDonut())?{
if(!VersionUtils.hasFroyo())?{
dir?=newFile(Environment.getExternalStorageDirectory().getPath()
+"/Android/data/"+?context.getPackageName()?+"/cache/");
if(!dir.exists()?&&?!dir.mkdirs())
dir?=null;
}else{
dir?=?context.getExternalCacheDir();
}
returndir;
}
如果把VersionUtils.hasFroyo()改成VersionUtils.hasDonut()則會報編譯錯誤,如果是@SuppressLint("NewApi")?則不會提示錯誤。比較嚴謹的角度講,更加推薦TargetApi