关于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这个包含高版本的方法调用的方法是安全的。

针对第三个问题:

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

注意:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,813评论 25 708
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,925评论 6 342
  • 什么是注解 注解对于开发人员来讲既熟悉又陌生,熟悉是因为只要你是做开发,都会用到注解(常见的@Override);...
    张明云阅读 25,297评论 6 154
  • 图文/蓝子辰 读完李尚龙的《你要么出众,要么出局》,很有感触。 李尚龙,百万畅销书作家,中国优质新偶像。曾在新东方...
    蓝子辰阅读 1,494评论 10 25
  • 有 android 开发经验的朋友们,对 Fragment 可能都有一种又爱又恨的感觉。所以在讲 Fragment...
    small_yg阅读 489评论 0 0