一. 坑: 調用高于minSdkVersion版本的API時, AS無提示 !
最近重構項目時用到了HandlerThread類, 代碼中調用了此類的quitSafely()方法, 結果導致了下面的錯誤:
調用高版本api導致的crash.png
經過一番折騰, 發現quitSafely()方法是API Level 18
添加的, 再看看crash的系統版本, 基本上都是4.3 (4.3對應api level 18)以下的. 毫無疑問這是個版本兼容性問題. 問題找到了, 修復就容易了, 無非是兼容一下低版本 (低于api level 18
的系統, 調用quit( )
方法).
***關鍵問題是: 調用高版本的api為啥編譯器沒有提示 ?! ***
? 一般調用大于minSdkVersion版本添加的API時, 編譯器是會有提示的 (方法下面會劃紅線) !! 如下:
調用高于minSdkVersion版本的api是IDE (AS) 的提示.png
二. 解決
又經過一番折騰, 發現屏蔽了lint提示. 項目根目錄下有個lint.xml文件, 內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue id="NewApi" severity="ignore" />
</lint>
沒錯, 就是它干的好事 !! 刪掉它, 重新build一下項目, 就有提示啦 !!
如果你不想讓IDE提示你, 你可以在你的項目根目錄下, 添加一個lint.xml, 內容如上. 我想說的是: 千萬別這樣干 !!.
如果你真的屏蔽掉了Lint提示, 那就祝你好運 (????)? ...