在 Dagger 里需要以下四大重要的 annotation:
在 build.gradle 向 dependencies 添加( https://github.com/google/dagger/releases 可以找到最新版本的 Dagger):
dependencies {
implementation 'com.google.dagger:dagger:2.21'
annotationProcessor 'com.google.dagger:dagger-compiler:2.21'
}
UserRepository:
public class UserRepository {
private final UserLocalDataSource userLocalDataSource;
private final UserRemoteDataSource userRemoteDataSource;
@Inject
public UserRepository(UserLocalDataSource userLocalDataSource, UserRemoteDataSource userRemoteDataSource) {
this.userLocalDataSource = userLocalDataSource;
this.userRemoteDataSource = userRemoteDataSource;
}
}
UserLocalDataSource:
public class UserLocalDataSource {
@Inject
public UserLocalDataSource() {}
}
public class UserRemoteDataSource {
private final LoginRetrofitService loginRetrofitService;
@Inject
public UserRemoteDataSource(LoginRetrofitService loginRetrofitService) {
this.loginRetrofitService = loginRetrofitService;
}
}
LoginViewModel:
public class LoginViewModel {
private final UserRepository userRepository;
@Inject
public LoginViewModel(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
ApplicationComponent:
@Component(modules = NetworkModule.class)
public interface ApplicationComponent {
// 注入 LoginActivity
void inject(LoginActivity loginActivity);
}
MyApplication:
public class MyApplication extends Application {
ApplicationComponent appComponent = DaggerApplicationComponent.create();
}
LoginActivity:
public class LoginActivity extends Activity {
@Inject
LoginViewModel loginViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
((MyApplication) getApplicationContext()).appComponent.inject(this);
super.onCreate(savedInstanceState);
}
}
NetworkModule:
@Module
public class NetworkModule {
@Provides
public LoginRetrofitService provideLoginRetrofitService() {
return new Retrofit.Builder()
.baseUrl("https://example.com")
.build()
.create(LoginService.class);
}
}
谢谢大家愿意花时间阅读,小弟弟我在此鞠躬
<<: android studio 30天学习笔记-day 18-viewPager
>>: Day 18 - Isomorphic Strings
使用终端机搜寻特定字串时,大家一定用过 grep 这个指令吧~ 但你有想过 grep 为什麽叫 gr...
辞职前,最犹豫的一件事是「没请产假会不会太亏」,哈哈。几乎公司所有前辈都会劝你辞职前先做的事:买房跟...
此系列文章会同步发文到个人部落格,有兴趣的读者可以前往观看喔。 嗨!我是卯郁,去年就立志今年要参加...
行前作业 注册帐号 需要有自己的服务器或是相应的权限 开始後续作业 搜寻discord develo...
Day 27 网路设置与远端 网路及远端登入可能有先东西在先前已经介绍过,这边再稍微做个简单的范例。...