看別人的代碼好多地方用到了@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();
}
}
