如何消除间接呼叫 Method 在 Android Studio 中的编译警告

如题所述

如果有使用过 DI (Dependency Injection) Framework 像是 butterknife,或是 Bus 一类的 Framework 像是 Otto 或 EventBus,一定会撰写出 Method 是没有被自己开发的源代码直接呼叫的。这时在 Android Studio 的即时编译检查就会出现警告:

Method ‘...’ is never used

就像这篇文章里提到,警告的出现会形成一定程度上的困扰,最好是能够消除掉,毕竟这是一个无法避免的写法,但又不应该被看成是个问题。

照“调整 Android Studio 编译检查规则”中的方法把检查规则整个取消掉,是个一劳永逸的方法。但是也把其可能的错误也抑制掉了,徒增程序质量上的风险,并非上策。

另外一个可行的选项是在方法上宣告 SuppressWarnings 的 Annotation,像是 @SuppressWarnings("unused")、@SuppressWarnings({"UnusedDeclaration"})、@SuppressWarnings({"UnusedParameters”})。跟前一个方案一样,应该显示的警告也同时被遮蔽掉了,不是最佳的方式。

所幸 Android Studio 也不是没有提供对策,在有问题的源代码上按下“alt+enter”,会跳出 Menu 并可以选择 Suppress for methods annotated by ‘...’ 项目。以 greenrobot 的 EventBus 为例,所有以 org.greenrobot.eventbus.Subscribe 为 Annotation 的 Method 都不会再显示警告,所以问题顺利地解决了。

以上的解决方法应该已经很多人都知道了,只是还有一个衍生的问题。如果使用的 Framework 提供的 Annotation 不只一个,还是得要一个一个地重覆相同的动作,不能一次搞定吗?

这时可以开启“调整 Android Studio 编译检查规则”中提到的 Inspections 选项画面,切换到“Java->Declaration redundancy->Unused declaration”项目。画面右方的 Options Frame 最下方有一个【Configure annotations...】的按钮,点下去之后会再跳出另一个小视窗。接着就可以在视窗的最下方新增【Add Annotation Class】或【Add Annotations Pattern】,前一个是新增单一个 Class,另一个则是使用万用字元来增加一整组的 Class。

以上说明的这些资讯都被存在 .idea/misc.xml 的文件中,打开后会看到类似以下的内容:

<component name="EntryPointsManager">
<entry_points version="2.0" />
<list size="1">
<item index="0" class="java.lang.String" itemvalue="org.greenrobot.eventbus.Subscribe" />
</list>
</component>
如果你有莫名的控制欲,想要凡事都掌握在手中,可以直接修改文件的内容,也会达到一样的效果。
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-06-30
如果有使用过 DI (Dependency Injection) Framework 像是 butterknife,或是 Bus 一类的 Framework 像是 Otto 或 EventBus,一定会撰写出 Method 是没有被自己开发的源代码直接呼叫的。这时在 Android Studio 的即时编译检查就会出现警告:

Method ‘...’ is never used

就像这篇文章里提到,警告的出现会形成一定程度上的困扰,最好是能够消除掉,毕竟这是一个无法避免的写法,但又不应该被看成是个问题。

照“调整 Android Studio 编译检查规则”中的方法把检查规则整个取消掉,是个一劳永逸的方法。但是也把其可能的错误也抑制掉了,徒增程序质量上的风险,并非上策。

另外一个可行的选项是在方法上宣告 SuppressWarnings 的 Annotation,像是 @SuppressWarnings("unused")、@SuppressWarnings({"UnusedDeclaration"})、@SuppressWarnings({"UnusedParameters”})。跟前一个方案一样,应该显示的警告也同时被遮蔽掉了,不是最佳的方式。

所幸 Android Studio 也不是没有提供对策,在有问题的源代码上按下“alt+enter”,会跳出 Menu 并可以选择 Suppress for methods annotated by ‘...’ 项目。以 greenrobot 的 EventBus 为例,所有以 org.greenrobot.eventbus.Subscribe 为 Annotation 的 Method 都不会再显示警告,所以问题顺利地解决了。

以上的解决方法应该已经很多人都知道了,只是还有一个衍生的问题。如果使用的 Framework 提供的 Annotation 不只一个,还是得要一个一个地重覆相同的动作,不能一次搞定吗?

这时可以开启“调整 Android Studio 编译检查规则”中提到的 Inspections 选项画面,切换到“Java->Declaration redundancy->Unused declaration”项目。画面右方的 Options Frame 最下方有一个【Configure annotations...】的按钮,点下去之后会再跳出另一个小视窗。接着就可以在视窗的最下方新增【Add Annotation Class】或【Add Annotations Pattern】,前一个是新增单一个 Class,另一个则是使用万用字元来增加一整组的 Class。

以上说明的这些资讯都被存在 .idea/misc.xml 的文件中,打开后会看到类似以下的内容:

<component name="EntryPointsManager">
<entry_points version="2.0" />
<list size="1">
<item index="0" class="java.lang.String" itemvalue="org.greenrobot.eventbus.Subscribe" />
</list>
</component>
如果你有莫名的控制欲,想要凡事都掌握在手中,可以直接修改文件的内容,也会达到一样的效果。

如何消除间接呼叫 Method 在 Android Studio 中的编译警告
这时可以开启“调整 Android Studio 编译检查规则”中提到的 Inspections 选项画面,切换到“Java->Declaration redundancy->Unused declaration”项目。画面右方的 Options Frame 最下方有一个【Configure annotations...】的按钮,点下去之后会再跳出另一个小视窗。接着就可以在视窗的最下方新增【Add Annotati...

怎么去掉 android studio编译时messages gradle build中的warning
最简单的方法。用RadioButton控件就行了。何苦搞得这么累呢。如果真要这样做也可以就是五个控件共用一个事件同时订阅相同事件然后再判断你选中的Checkbox其他的为假代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;运行 gradle -q publish 可发布 源...

在Android Studio中遇到如下错误提示应该如何处理?
1:开启及时运行,依次点击:Tools-->Android-->点击Enable ADB Integration,将所所对应项前面的对勾勾选上。2:依次点击,Setting->Build,Execution,Deployment->Instant Run。将所有项前面的对勾勾选上。3:修改build.gradle(Project那个),将gradle版本更改至2.0.0以上版本。旧版本project gradle不支持...

如何去掉Android Studio的注释警告
具体步骤:File->Settings->Editor->Inspections,在右侧找到Javadoc issues下的Declaration has Javadoc problems右侧的勾去掉然后点击Apply或者OK即可。然后就可以看到效果了。

android studio在新版本中的特性 问题,求教
1、在project->app->build.gradle中添加compileOptions.encoding = "GBK"。2、不能在布局文件中直接输入中文,需要在R文件中注册下,比如<activity android:label="中文" >改为<activity android:label="@string\/chinese" >,在strings.xml中添加<string name="chinese">中文<\/string>。

在android studio中出现file的错误怎么解决
Eclipse迁移到Android studio的步骤:一, 从Eclipse中导出1 . 升级Eclipse ADT 插件到版本22或更高2 . 在Eclipse里,File(文件) -- Export(导出)3 . 在弹出的窗口,选择Android -- Generate Gradle Build Files4 . 选择你要导出的项目,点击Finish(完成)在项目的目录下,产生了一个build.gradle...

请教Android Studio如何在编译前自动更改manifest.xml
1. standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。2. singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。3. singleTask 如果在栈中已经有该Activity的实例...

在Android studio 中的fragment中出现unknown fragments 的错误是...
这个问题很有可能是你自己定义的方法,没有在清单文件里进行说明,还有可能就是你没有引用官方的方法作为父方法,还有就是你引用的地方可能有错误,好好看看控制台的报错提示,问题很好解决。

Android Studio的编译按钮在哪?
点击菜单栏的Build 选择里面相应的就行了 如图:

Androidstudio的程序在虚拟器中显示stopped
看下方面红色的错误信息是因为所引用的部件,还没有进行初始化,在可能的地方加上日志,看是不是组件为null,进行判断处理。

相似回答