Android 匕首:第三方类可以';不需要注释吗?
我是新手。在它的 无法对第三方类进行注释 但在此示例中,它在main活动中注入了OTTO总线:Android 匕首:第三方类可以';不需要注释吗?,android,dagger,Android,Dagger,我是新手。在它的 无法对第三方类进行注释 但在此示例中,它在main活动中注入了OTTO总线: public class MainActivity extends BaseActivity { @Inject protected Bus bus; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.
public class MainActivity extends BaseActivity {
@Inject
protected Bus bus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
registerBus();
}
@Override
protected void onPause() {
super.onPause();
unRegisterBus();
}
private void registerBus() {
bus.register(this);
}
private void unRegisterBus() {
bus.unregister(this);
}
@Subscribe
public void onItemSelectedEvent(MovieSelectedEvent event) {
launchMovieDetailsActivity(event.getMovie());
}
所以我认为Dagger应该调用总线的默认构造函数(当然,总线构造函数中没有注入注释)。但它似乎与“第三方类不能被注释”相冲突
我认为Dagger应该调用总线的默认构造函数
如果有多个构造函数呢?它选择哪一个
Dagger不会随机创建类实例。你必须告诉它使用哪一个或自己创建它
在这种情况下,Bus
可以使用@Inject
构造函数进行注释。这将允许匕首在没有其他任何东西的情况下注入它。然而,奥托没有这个,所以它一定来自其他地方
另一种方法是编写提供程序方法
@Provides @Singleton Bus provideBus() {
return new Bus();
}
此方法(写在Dagger
@模块
)中)将为Dagger提供一种获取要注入的总线
实例的方法。由于Dagger是用@Singleton
注释的,因此每次请求该实例时,Dagger只会调用该方法一次,并反复使用该实例。执行此操作时是否会出错?不,它可以在android studio中成功编译和运行。工作完美……我认为这意味着你不能注释第三方类的构造函数(因为你不能修改源代码)。