匕首和黄油刀与Android的注解黄油、注解、匕首、Android

2023-09-05 23:12:35 作者:他不是面派

我评估依赖注入(DI)框架Android应用程序。顶级的竞争者是:匕首(用黄油刀)和Android注解。据我所知,匕首和ButterKnife是来自同一个源 - 广场和相互补充。 Here're是我要找的关键矩阵:

易于使用(我们的构建是基于摇篮,我们采用Android Studio IDE中) 在测试的支持(我们使用Robotium进行功能测试和RoboLectric单元测试) 性能(DI框架使用反射,哪一个是更快?) 解决方案

AndroidAnnotations 使用编译时批注处理。它会产生一个子类apppended原来的名称下划线( MyActivity _ MyActivity 生成)。所以有它的工作,你总是使用生成的类的引用,而不是你原来的类。

它有一个非常丰富的功能集,会看到可用注释中的列表。

Butterknife 使用同样的编译时间注释处理,但它产生一个用于通过中央级的取景器类( ButterKnife )。这意味着你可以使用你原来的类引用,但是你必须手动调用注入。从ButterKnife引进副本:

@覆盖公共无效的onCreate(包savedInstanceState){     super.onCreate(savedInstanceState);     的setContentView(R.layout.simple_activity);     ButterKnife.inject(本);     // TODO使用注入的观点...... }

该功能集不是那么丰富,ButterKnife支持视图注射液(AndroidAnnotations相当于将 @ViewById @ViewsById )和一些事件绑定(对于一个完整列表,请参阅命名空间目录here,只是算 OnXXX 事件注解)。

匕首 是DI的实现为Android,类似于吉斯。它还使用编译时批注处理和生成您使用手动注射对象图。要区分应用程序对象图和范围的对象图之间的注射如在活动。在这里,你看到一个 Application.onCreate 例如:

@覆盖公共无效的onCreate(){     super.onCreate();     objectGraph = ObjectGraph.create(getModules()的toArray());     objectGraph.inject(本);     //使用注射类 }

我发现这是很难下手匕首,但是这可能只是我的经验。但看到一些视频在这里一个更好的开始: 1 ,的