android学习之路Android知识

如何消除间接呼叫 Method 在 Android Studio

2016-11-25  本文已影响1009人  _WZ_

如果有使用过 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 ‘...’ 项目。以 greenrobotEventBus 为例,所有以 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>

如果你有莫名的控制欲,想要凡事都掌握在手中,可以直接修改文件的内容,也会达到一样的效果。

上一篇下一篇

猜你喜欢

热点阅读