我希望能夠在沒有此功能的情況下在運行Android 7級的設備上使用該應用。如果設備的API級別爲11或更高,我希望此功能可用。我應該使用@SuppressLint
還是@TargetApi(HONEYCOMB)
以及有什麼區別?擺脫兼容性錯誤的正確方法是什麼?
謝謝!
我希望能夠在沒有此功能的情況下在運行Android 7級的設備上使用該應用。如果設備的API級別爲11或更高,我希望此功能可用。我應該使用@SuppressLint
還是@TargetApi(HONEYCOMB)
以及有什麼區別?擺脫兼容性錯誤的正確方法是什麼?
謝謝!
使用TargetApi
,你告訴編譯器,你是肯定該類/方法/任何永遠不會被調用,除非符合API要求。
這就是你想要做的。但是這也意味着你必須確保這個類在這個API級別下不會被調用。您可以使用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// Call that class
} else {
// Call another class
}
@SuppressLint'NewApi' - 告訴Lint忽略所有警告,如果您使用的API是在您使用的最低SDK版本之後引入的。如果您以後使用超出HONEYCOMB級別的API(這是目前運行您的項目所需的最低API級別),則這可能會抑制可能發生的錯誤警告。
@TargetApi(HONEYCOMB) - 告訴Lint將此類型視爲指定給定的API級別,忽略您可能提及的任何最低API級別。如果您後來引用超出HONEYCOMB級別的API,Lint將再次發出警告。
除此之外,您無法在只能運行以前版本的Android且無法解釋這些API的設備上使用更高版本的API來運行該應用程序。儘管應用可能會正確加載,但當它看到對此API的調用時,它會崩潰,因爲該版本的Android不明白它的期望。您可以在HONEYCOMB或更高級別的設備上運行它,而不會出現問題。如果您想在以前的版本上運行這些應用程序,則可能需要考慮使用支持庫(如果可用)。
您想使用TargetApi
。其原因是,SuppressLint("NewApi")
會吞下所有錯誤皮棉,不僅您使用API級別11
比方說,你以後使用API級別12. TargetApi
您將收到一個新的警告,這樣你就可以採取行動。用SuppressLint("NewApi")
你不會得到任何東西。最好禁用警告,而不是永遠禁用它們。