一. 坑: 调用高于minSdkVersion版本的API时, AS无提示 !
最近重构项目时用到了HandlerThread类, 代码中调用了此类的quitSafely()方法, 结果导致了下面的错误:
经过一番折腾, 发现quitSafely()方法是API Level 18
添加的, 再看看crash的系统版本, 基本上都是4.3 (4.3对应api level 18)以下的. 毫无疑问这是个版本兼容性问题. 问题找到了, 修复就容易了, 无非是兼容一下低版本 (低于api level 18
的系统, 调用quit( )
方法).
***关键问题是: 调用高版本的api为啥编译器没有提示 ?! ***
☞ 一般调用大于minSdkVersion版本添加的API时, 编译器是会有提示的 (方法下面会划红线) !! 如下:
二. 解决
又经过一番折腾, 发现屏蔽了lint提示. 项目根目录下有个lint.xml文件, 内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue id="NewApi" severity="ignore" />
</lint>
没错, 就是它干的好事 !! 删掉它, 重新build一下项目, 就有提示啦 !!
如果你不想让IDE提示你, 你可以在你的项目根目录下, 添加一个lint.xml, 内容如上. 我想说的是: 千万别这样干 !!.
如果你真的屏蔽掉了Lint提示, 那就祝你好运 (♥◠‿◠)ノ ...