close

前篇我們提到了解決 Call requires API level 的 Annotation 不止一個

今天我們就來說說其差異性在哪

一共有三個 Annotation 要解說

// 此 class 需要 M 以上調用,否則會 crush
@RequiresApi(api = Build.VERSION_CODES.M)
@TargetApi(Build.VERSION_CODES.M)
@SuppressLint("NewApi")
public class FingerprintHelper { 。。。}

 

1、@TargetApi(Build.VERSION_CODES.M)@TargetApi(23)

此注解表示這段 code 只能在 API23 以上運行

可以排除高版本 API 在低版本 SDK 的報錯

若達不到 TargetApi

那由於我們只是忽略警告而已,在運行時還是會出錯。

 

2、@RequiresApi(api = Build.VERSION_CODES.M)

此註解和 TargetApi 的作用是一樣的

只是在字面上更容易讓人理解是「需要23以上」的環境

官方較推薦使用 RequiresApi 來取代 TargetApi

 

3、@SuppressLint("NewApi")

此注解代表直接壓制此錯誤,

NewApi = Calling new methods on older verstions.

值代表的是錯誤,可壓制複數錯誤,如 @SuppressLint("111", "222")

相較前兩個注解還有指定版號,此注解是「一律」壓制,故較不推薦使用。

若要知道更多值與錯誤的 mapping

可在 settings 中查找 Inspections ,有定義過的錯誤和警告。

 

 

 

 

 

 

 


arrow
arrow
    創作者介紹
    創作者 顏澤偉 的頭像
    顏澤偉

    Willy's Fish教學筆記』

    顏澤偉 發表在 痞客邦 留言(0) 人氣()