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 ,有定義過的錯誤和警告。
文章標籤
全站熱搜
留言列表