关于TargetApi,NewApi,RequireApi的理解

首先我们需要理清当前问题的解决思路。

问题分为三个方面:

1编译问题

2lint提示问题

3代码真机运行问题(是否崩溃)

针对第一个问题:

只要参与编译的android版本拥有当前调用的函数,编译没有任何问题

针对第二个问题:

lint:依据一定规则在源码级别检测代码潜在安全等等问题的一种工具。

如果当前调用方法版本高于minisdkverison版本,lint就会提示我们,这处调用可能会在低版本的android系统上运行失败,就是俗称的崩溃。

针对lint提示的问题,解决方案就是针对lint的机制提出的:

1改规则,一般没人怎么做 

2关闭该条规则检查

3使用注解告诉lint,不要检查当前的方法,就是SuppressWarnings(“NewApi”)

4使用注解告诉lint,这种用法我已经做了妥善处理,请不要提示。就是TargetApi,RequireApi。这些注解只是告诉lint不要提示罢了,如果你没做任何防范措施,对代码的运行不会产生任何影响,该崩的还是会崩。就好像,别人告诉你这样做很危险,你说你是故意这样做的,并且说你防范了潜在的危险。事实上你没防范。

5使用行动告诉lint,你做了防范,就是所谓的添加版本判断。有时候你添加了版本判断,但是高版本分支代码是对一个自定义的方法的调用,而不是直接调用高版本的方法。这时候你还要在自定义的函数上面添加TargetApi,RequireApi提示。这次你是做了防范之后,告诉lint这个包含高版本的方法调用的方法是安全的。

针对第三个问题:

一定需要确保高版本的方法调用只在高版本中发生。唯一的方法就是添加版本判断。

注意:

你可能感兴趣的:(关于TargetApi,NewApi,RequireApi的理解)