参见 https://github.com/excilys/androidannotations/wiki/FAQ
一般性问题
AndroidAnnotations对性能有没有影响?
简单说:没有。AndroidAnnotations在编译时有一些花销 (参见它如何工作) 但是生成的类都是经典的Android代码。没有反射。不需要启动时间,对运行时没有影响。
生成的代码?是的!
有些人认为生成的代码应该尽可能地避免。这里有一些我认为生成代码仍然是一个好想法的原因:
- 感谢Java6标记处理工具,所有的代码在你编译的时候自动生成。这意味着生成的代码会 永远是最新的。
- 安卓现在还没有提供快速的反射和动态代码生成。这意味着我们现在必须面临一个选择,即缓慢的反射/Java动态代理(限制在实现接口)或是生成代码。
- 大多数工具和IDE 无缝的 和Java's Annotation Processing Tool结合 : Maven, Ant, Eclipse, Netbeans...
你怎么比较和RoboGuice 的异同?
RoboGuice 是一个伟大的项目,它使用Guice使得安卓里可以依赖注入(DI)。它还提供了一些跟AndroidAnnotations 很类似的标注(视图注入等)。
但是 RoboGuice 在runtime读入这些标注,并且使用反射注入这些字段,这会影响到运行时的 性能。
AndroidAnnotations在编译时生成在子类生成这些样板代码,这显然在性能上对runtime没有任何影响。
AndroidAnnotations 和 RoboGuice没有竞争反而相当互补,这取决于你的需求。事实上,你甚至可以同时使用它们两个。
老实说,我(@pyricau)也使用和对RoboGuice对一些贡献 ,这也是为什么AndroidAnnotations 用起来很相似的原因。
为什么生成子类而不是直接修改这些Activity?
因为Java标注处理工具不允许修改代码。这个规则的唯一意外是project Lombok,这个项目非常的伟大但并不是在所有Java编译器下都能工作。
TO BE CONTINUE...