關於android的@TargetApi和@SuppressLint("NewApi")


看別人的代碼好多地方用到了@TargetApi。以前一直不知道這個是什么意思。后面偶然看了下sdk。才有所明白。

其實這個東西就是在你使用了android Lint檢查工具的時候,為了防止代碼出現提示性錯誤而設計的。說白了,如果你關閉了android Lint,那么這個對你屁用都沒有。

比如你的androidmanifest設置了minsdkversion為8,那么你在代碼中使用了高於api8的代碼,

就算你用的是4.4的sdk進行的代碼編譯,只要你沒使用@TargetApi,很抱歉,運行android lint直接就顯示錯誤提示。這個時候我們該怎么辦呢?就是在方法或類的開頭寫上@TargetApi(xx)。如果你下面的代碼要在api13的情況下運行,那么xx處你就填寫13。不能填低了,填低了,還是報錯。

這和@SuppressLint("NewApi")不一樣。suppress只告訴lint,我這代碼如果高於你的minsdkversion,那么請忽略編譯錯誤。

 

 

最后強調一點:targetapi和你代碼的運行環境沒任何關系。意思就是說即使你寫了@TargetApi(11)。不代表你的這個 方法就會被限制在android 3.0的設備上運行。

因此兼容性判斷還是必不可少的。所以@targetapi最常用的情景代碼如下:

@TargetApi(11)

public void reqFragmentManger(){

 

      if(Build.Version.SDK_INIT >= Build.VersionCodes.HONEYCOMB) {

             FragmentManager manager = getFragmentManager();

       }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM