在Android代碼中,我們有時會使用比我們在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錯誤,所以在方法中還要判斷版本做不同的操作,比如:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { // } else {// Pre GINGERBREAD //
}
